我试图填充<h:selectOneMenu>
的列表。但是,我试图检索的列表是另一个基类中变量的类的一部分。JSF从子类中选择项目
这是我的,我不知道这是甚至可能或如何做到这一点。
我有一个Citation
类有以下:
public class Citation {
private int id;
private String title;
private Status status;
// getters and setters
}
然后,我有一个Status
类有以下:
public class Status {
private int id;
private String name;
public List<Status> getAll() {
// goes to the database and gets a list of status objects
System.out.println("I was called!");
}
// getters and setters
}
然后我XHTML页面上,我有以下几点:
<h:selectOneMenu id="citation_status" value="#{citation.status}">
<f:selectItems value="#{citation.status.all}" var="s"
itemLabel="#{s.name}" itemValue="#{s.id}" />
</h:selectOneMenu>
但是,这似乎并没有调用方法在Status
类中。当页面加载完成时,选择框为空,并且控制台没有从getAll()
方法输出I was called!
。
我对JSF有点新,我试过尽我所能寻找最好的,但我不确定在搜索时使用的术语,因为它在技术上不称为“子类”,但这是我可以提出的最好的名字,所以不用说,我没有找到任何东西。
其他信息
如果有帮助:
- 我用Glassfish的作为我的应用程序服务器
- 我使用Hibernate我ORM
- 我使用JSF 2.0
现在我想到了,这是有道理的,因为'status'尚未初始化。对于''value属性,我可以使用'status.all'而不是'citation.status.all'吗? –
Jared
2010-09-14 18:12:42
如果在范围的某个地方有'#{status}',那肯定是。你还必须修复潜在的转换问题:) – BalusC 2010-09-14 18:14:40
至少可以获取列表中的项目。至于转换问题,有没有办法将值设置为实际的对象?我尝试使用'',但得到错误'错误设置值状态为空转换器'我假设我需要查看使用转换器来处理? –
Jared
2010-09-14 18:18:51