【发布时间】:2013-01-27 06:21:56
【问题描述】:
我正在一个 jsf 页面上测试组件“SelectOneMenu”。我正在通过我的 ManageBean 动态填充这个组件(这将从数据库中获取所有动物)。
我想知道是否可以看到该“SelectOneMenu”(组合框)的用户选择项,我正在尝试使用 value="#{animalsManage.animalSelect}" 但它只在开头调用这页纸。另外,我正在使用 inputText 来查看“SelectOneMenu”的选定项的值。
我做错了什么?
JSF:
<body>
<ui:component>
<h:form>
<h:outputText value="Select one Mets File" />
<h:selectOneMenu id="combo" value="#{animalsManage.animalSelected}">
<f:selectItem itemLabel="Select..." noSelectionOption="true"/>
<f:selectItems value="#{animalsManage.allAnimals}" />
</h:selectOneMenu>
<h:inputText id="textbox" value="#{animalsManage.animalSelected }" />
</h:form>
</ui:component>
</body>
管理豆:
@ManagedBean
@ViewScoped
public class AnimalsManage implements Serializable {
@EJB
private AnimalsFacadeREST animalsFacadeREST;
private String animalSelected;
private List< SelectItem> selectAnimals;
public List<SelectItem> getAllAnimals() {
List<Animals> al = animalsFacadeREST.findAll();
selectAnimals = new ArrayList< SelectItem>();
int i = 0;
for (Animals animal: al) {
selectAnimals.add(new SelectItem(i, animal.getName()));
i++;
}
return selectAnimals;
}
public String getAnimalSelected() {
return animalSelected;
}
public void setAnimalSelected(String animalSelected) {
this.animalSelected = animalSelected;
}
}
【问题讨论】:
-
您可以在
中添加一个 f:ajax,事件为“change”,还可以提供一个值为“@form”的渲染属性。这可以在文本框中显示您选择的值。像这样的 。试一试。 -
什么是
#{fileManage.fileName}?顺便说一句,<h:selectOneMenu>呈现下拉菜单,而不是组合框。让你的条款直截了当。最后但同样重要的是,在 getter 中执行业务逻辑是不好的。有关如何正确使用<h:selectOneMenu>的一些提示,请查看其 wiki 页面(将鼠标放在您放置在问题上的[selectonemenu]标签上,直到出现一个黑框,然后在其中单击 info 链接)。 -
感谢 hemanth 帮助。另外,感谢 BalusC,我编辑了文本,希望现在可以了。
标签: jsf-2 managed-bean selectonemenu