最近在JSF的开发中使用了richfaces插件,使用了其便捷的标签插件:
其中richlist:Shuttle就是一个比较好用的标签,以下讲其标签的具体应用的测试实例:
首先在backbean中需要做以下配置:
<managed-bean>
<managed-bean-name>testShuffle</managed-bean-name>
<managed-bean-class>demo.controller.TestShuffle</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<converter>
<converter-id>Shuttleconverter</converter-id>
<converter-class>demo.bean.Converter</converter-class>
</converter>
TestShuffle是用来实现生成List的action:
public class TestShuffle {
private List<ShuffleItem> sourceList = new ArrayList<ShuffleItem>();
private List<ShuffleItem> targetList = new ArrayList<ShuffleItem>();
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
IUserDAO userdao = (UserDAO)context.getBean("userDao");
public List<ShuffleItem> getSourceList() {
return sourceList;
}
public void setSourceList(List<ShuffleItem> sourceList) {
this.sourceList = sourceList;
}
public List<ShuffleItem> getTargetList() {
return targetList;
}
public void setTargetList(List<ShuffleItem> targetList) {
this.targetList = targetList;
}
public String getRichList(){
List list = userdao.getNames();
for(int i = 0;i < list.size();i++){
HashMap paramMap = (HashMap)list.get(i);
ShuffleItem item = new ShuffleItem();
item.setName(paramMap.get("NAME").toString());
sourceList.add(item);
}
return "richList";//转向testRichfacesShuffle.xhtml
}
/*
*此方法用于测试TargetList取到的值
*/
public String getTargetValue(){
System.out.println("targetList.size()="+this.getTargetList().size());
System.out.println("the value in targetList is:");
for(int i=0;i < this.getTargetList().size();i++){
System.out.println(targetList.get(i).getName());
}
return null;
}
展示List的界面testRichfacesShuffle.xhtml:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:c="http://java.sun.com/jstl/core">
<!--引用统一的模板-->
<ui:composition template="pages/templates/Demotemplate.xhtml">
<!--header区域-->
<ui:define name="pageHeader">测试rich:listShuttle的取值</ui:define>
<!--body区域-->
<ui:define name="body">
<h:form>
<h:messages>
<f:facet name="errorMessage"></f:facet>
</h:messages>
<rich:listShuttle var="items"
sourceValue="#{testShuffle.sourceList}"
targetValue="#{testShuffle.targetList}"
targetRequired="true"
converter="Shuttleconverter"
sourceCaptionLabel="备选字段" targetCaptionLabel="已选字段"
listsHeight="200"
sourceListWidth="130"
targetListWidth="130" >
<rich:column width="50">
<h:outputText value="#{items.name}"></h:outputText>
</rich:column>
</rich:listShuttle>
<h:commandButton action="#{testShuffle.getTargetValue}" value="下一步" />
</h:form>
</ui:define>
</ui:composition>
</html>
注意:此处的 converter需要自己实现;以下是实现的代码:
首先:定义Converter.java类:
public class Converter implements javax.faces.convert.Converter{
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
return new ShuffleItem(value);
}
public String getAsString(FacesContext context, UIComponent component,
Object value) {
ShuffleItem optionItem = (ShuffleItem) value;
return optionItem.getName();
}
}
其次是ShuffleItem .java:
public class ShuffleItem {
private String name;
public ShuffleItem(){
}
public ShuffleItem(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ShuffleItem other = (ShuffleItem) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
必须要实现转换器(converter)才能在列表间移动数据的时候分别取得源列表和目标列表的值!
分享到:
相关推荐
本实例,使用ShuttleESB完成...下载实例后,需要配置QuickStart.Shuttle.Server项目的启动类型为:Shuttle.Core.Host项目的exe程序 步骤就是:右击QuickStart.Shuttle.Server——调试——启动操作——选择对应的路径。
Ruby以其简洁的语法和丰富的库而闻名,适合快速开发这样的复杂应用。 8. **开源特性**:Shuttle是开源的,意味着任何有兴趣的人都可以查看其源代码,学习其设计思路,甚至贡献自己的改进和修复。这种开放性有助于...
1. **快速入门**:介绍如何安装和配置Shuttle.Esb,以及创建第一个消息传递应用程序的步骤。 2. **API参考**:详细列出Shuttle.Esb的类库、接口和方法,供开发者查阅和调用。 3. **教程与示例**:提供实际应用场景的...
Shuttle是用于测试并发Rust代码的库。 它是许多随机并发测试技术的实现,包括。 入门 考虑以下简单的并发代码: use std :: sync :: {Arc, Mutex}; use std :: thread; let lock = Arc :: new (Mutex :: new ( 0u...
它会读取您的默认shuttle.json文件,并为您提供一个CLI界面。 实际上,它也不需要Shuttle客户端。 您所需要的只是homefolder中的有效.shuttle.json文件。 $ shuttle +--------+----------------------------------...
项目介绍shuttle-cloud是项目基于Spring Cloud的分布式实现,采用了Spring Cloud Eureka , Spring Cloud Config , Spring Boot Admin , Spring Cloud Gateway , Spring Cloud OpenFeign , Docker等核心技术,...
通过深入学习和理解Shuttle.Core的文档库,开发者可以更好地利用这个强大的工具集,提升软件开发效率,减少代码重复,并确保应用具有良好的可扩展性和可维护性。在实际项目中,正确使用Shuttle.Core可以大大提高代码...
穿梭 用于将内容移至容器运行平台的工具映像 叉; 将内容添加到./payload/ ; 构建,标记和发布图像; 部署映像; 使用内容。 这似乎有点鲁伯·戈德堡。 当安全性要求并且允许这种方法时,我会使用它。...
Shuttle.Esb.Module.CorruptTransportMessage Shuttle.Esb的CorruptTransportMessage模块会将未能反序列化的所有传输消息写入磁盘。 它将通过ServiceBusEvents.TransportMessageDeserializationException事件进行...
Shuttle是一款轻量级的应用程序,设计目的是简化开发者和系统管理员在Mac上访问远程Linux服务器的过程。它提供了图形化的用户界面,使得SSH连接变得更加直观和高效。 描述中的链接指向了CSDN博客上的一篇文章,虽然...
前端-驱动程序 let me know if you need the usernames and passwords 当前版本: ... 如果您更改任何源文件,该应用程序将自动重新加载。 构建和部署生产服务器 在项目文件夹中运行ng build --pro
"bu-shuttle" 是一个基于Web的替代应用,旨在替换原有的BU Shuttle服务,主要用于波士顿大学的学生、教职员工以及其他使用者跟踪和规划校园内的穿梭巴士路线。此项目目前仍处于早期开发阶段,这意味着它可能包含一些...
* Shuttle板允许通过简单的插座简单地访问传感器引脚,并可以直接插入Bosch Sensortec的应用板3.0。 知识点2:Shuttle板识别 * Shuttle板的识别信息包括Shuttle ID(0x1b8)和Shuttle板标识符(BST00819)。 * 该...
"将配置文件应用到当前的延时文件的EXE上"这一描述可能是指Shuttle Pro2驱动支持自定义快捷键映射和预设配置。用户可以创建或下载特定应用程序的配置文件,这些文件包含了各个按键和旋钮对应的功能映射。通过将这些...
**Swift-Shuttle:macOS上的高效SSH连接工具** Swift-Shuttle 是一款专为macOS设计的SSH快捷菜单应用,旨在简化系统中频繁的SSH连接操作。通过使用Swift语言进行开发,它提供了用户友好的界面和高效的性能,使得IT...
今天我们要探讨的是单词“shuttle”,它是一个多义词,既有动词含义也有名词含义,广泛应用于各种语境中。 一、动词“shuttle” 1. 意义:穿梭般来回移动 2. 读音:['ʃʌtl] 3. 不及物动词用法:主语 + shuttle + ...
标题"ShuttleSSHshortcut.zip"表明这是一个与SSH(Secure Shell)相关的软件,名为Shuttle,可能是为了方便用户快速访问SSH服务器而设计的。它以压缩文件的形式提供,暗示里面包含了该软件的源代码或者安装包。 ...
"EasternPioneer Bus"是一款专为东方先锋Shuttle巴士服务打造的Android应用,它为乘客提供了便捷、高效的出行体验。本文将对这款应用进行深入剖析,探讨其背后的Java技术实现。 首先,让我们了解一下"东方先锋巴士...
Shuttle是用于小型应用程序和单服务器部署的简约应用程序部署工具。 配置存储为YAML编码文件,无需使用ruby代码。 在与目标服务器的SSH连接上执行操作。 安装 从Rubygems安装: gem install shuttle-deploy 或手动...
“Shuttle音乐播放器”可能是一款设计精良、功能丰富的音乐应用,旨在为用户提供高质量的音频体验。它可能包含以下关键组件和特性: 1. 用户界面:一个直观且易于使用的界面,允许用户浏览音乐库,创建播放列表,...