[英]Dynamically add the component in JSF?
在我的應用程序中,組件必須動態更改。 我有一個數據表,因為我有兩列,首先是菜單中的<h:selectoneMenu>
我有兩個數據(數據分別為1和2),如果選擇了1,則應出現<h:inputText>
如果選擇了2,應顯示<h:selectoneMenu>
。 需要幫助嗎?
我的JSF
<h:selectOneMenu id="menu" value="#{sample.data}" rendered="true" valueChangeListener="#{sample.change}">
<f:selectItem itemLabel="Data" itemValue=""/>
<f:selectItems value="#{sample.list1}"/>
<a4j:support event="onchange" reRender="text" />
</h:selectOneMenu>
<h:inputText id="text" value="#{sample.input}" rendered="#{sample.status}" />
我的豆類
public class Sample {
private Boolean status; //Getter & Setter
private List<SelectItem> list1; //Setter
private String input; //Getter & Setter
private String data; //Getter & Setter
public void change(ValueChangeEvent event){
System.out.println((String)event.getNewValue());
if(((String)event.getNewValue()).equals("value1")){
status=true;
}
else if(((String)event.getNewValue()).equals("value2")){
status=false;
}
}
public Boolean getStatus(){
if(status==null){
status=true;
}
return status;
}
public List<SelectItem> getList1() {
if(list1==null) {
list1 = new ArrayList<SelectItem>();
list1.add(new SelectItem("value1", "label1"));
list1.add(new SelectItem("value2", "label2"));
}
return list1;
}
}
我的建議是:不要動態添加/刪除組件。 用另一種方法解決您的問題:
動態添加/刪除組件始終是麻煩的源頭,而且您有可能以另一種簡單得多的方式執行此操作。
在您的情況下,使用rendered
屬性來rendered
可見性就足夠了。
假設您有這樣的事情
<h:selectoneMenu id="selectOne" rendered="#{myBean.selectOneRendered}">
<h:inputText id="input" rendered="#{!myBean.selectOneRendered}">
您在jsp頁面中同時擁有這兩個組件。 重新加載jsp后,將檢查渲染的屬性。
在您的myBean中,您必須具有這樣的內容
public boolean isSelectOneRendered(){
boolean rendered;
//Do something here
return rendered;
}
如果結果為true,則將呈現selectOne,而不會呈現輸入,反之亦然。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.