我试图让用户从JSF的下拉列表中选择一个集合的项目.这是我正在使用的代码:
<f:view>
<h:form id="insert">
<h:selectOneMenu value="#{MyBean.user}">
<f:selectItems value="#{MyBean.userList}" var="currentUser" itemValue="#{currentUser.username}" itemLabel="#{currentUser.username}"/>
</h:selectOneMenu>
<h:commandButton value="Insert" action="#{AuctionBean.insertItem}"/><br>
</h:form>
</f:view>
Run Code Online (Sandbox Code Playgroud)
这是MyBean的代码:
@ManagedBean
public class MyBean{
private String user;
private Collection<User> userList;
@PostConstruct
public void init() {
this.userList = UserRepository.getInstance().findAllUsers();
}
...
public String insertItem() {
System.out.println("The selected user is " + this.user);
...
return ("successfulInsertion");
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果需要我的用户的getter和setter:
public String getUser() {
return this.user;
}
public void setUser(String user) {
this.user = user;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当它打印"所选用户是"时,没有编写user.toString(),而是userList.toString()!这就像selectOneMenu没有正确设置,但我搜索了很多.有人可以帮忙吗?谢谢,AN
不<f:selectItems>支持Collection. 你需要一个List或Map或Object[]。
更新:事实证明您正在使用 JSP 而不是 Facelets。新的 JSF 2.x 标记和属性不可用于 JSP。这包括<f:selectItems var>. 只有旧的 JSF 1.x 标记和属性可用于 JSP。从 JSF 2.0 开始,JSP 已被弃用并由 Facelets 取代。您应该改用 Facelets。
| 归档时间: |
|
| 查看次数: |
39202 次 |
| 最近记录: |