我是jsf 2.0的新手,因此我面临一个严重的问题,分组主要数据网格和单选按钮。我正在使用JSF 2.0-Primefaces 3.3,java 1.6,并在Windows操作系统上的tomcat服务器上运行我的应用程序。
问题是对数据网格和单选按钮进行分组。以下段落将描述示例代码:
@ManagedBean(name="quickBill")
@ViewScoped
public class QuickBill extends BaseManagedBean implements Serializable {
private List<String[]> insurerIDs=null;
@PostConstruct
public void init(){
loadInsurer();
}
private void loadInsurer(){
logger.info("Entered Load Insurer");
insurerIDs = new ArrayList<String[]>();
if (null != insurerList) {
insurerIDs.add(new String[] {"InsurerID1","Insurer_Name1") });
insurerIDs.add(new String[] {"InsurerID2","Insurer_Name2") });
insurerIDs.add(new String[] {"InsurerID3","Insurer_Name3") });
insurerIDs.add(new String[] {"InsurerID4","Insurer_Name4") });
}
}
public List<String[]> getinsurerIDs() {
return insurerIDs;
}
}
jsf代码如下:
<p:dataGrid var="quickBillVar" value="#{quickBill.insurerIDs}" columns="4" >
<p:column selectionMode="single">
<p:selectOneRadio id="options" value="#{quickBill.selectedOption}">
<f:selectItem itemLabel="#{quickBillVar[1]}" itemValue="#{quickBillVar[1]}"/>
</p:selectOneRadio>
<p:commandLink id="insurerid" title="Isurer">
<p:graphicImage value="../../images/insurers1/#{quickBillVar[0]}.jpg"/>
</p:commandLink>
</p:column>
</p:dataGrid>
上述代码执行时会显示单选按钮,允许用户同时选择多个单选按钮。但是,要求是限制用户仅选择一个按钮,而不是允许用户一次选择多个按钮。我也使用selectionMode =“single”来产生预期的输出,但它没有多大帮助。
请帮助我,或者提供一些可以解决这个问题的例子。
答案 0 :(得分:0)
您可以使用Map
尝试以下代码。
支持bean代码
String selectedInsurer;
Map<String,String> insurerIDs = new LinkedHashMap<String,String>();
insurerIDs.put("InsurerID1", "Insurer_Name1"); //(label, value)
insurerIDs.put("InsurerID2", "Insurer_Name2");
insurerIDs.put("InsurerID3", "Insurer_Name3");
insurerIDs.put("InsurerID4", "Insurer_Name4");
//-- getter & setter
在前端
<h:selectOneRadio value="#{quickBill.selectedInsurer}">
<f:selectItems value="#{quickBill.insurerIDs}" />
</h:selectOneRadio>
答案 1 :(得分:0)
我相信此示例中的自定义布局会有所帮助。 http://www.primefaces.org/showcase/ui/selectOneRadio.jsf