我正在使用netbeans 6.9.1 Glassfish 3.我有一个JSF文件,上面有一个selectOneMenu
列表框。此列表框将填充DB中的值。
现在,当我单击表单上的按钮时,值将添加到列表框中。我想要做的是,当页面自己加载时填充列表框。
知道我应该怎么做。我尝试将代码添加到Java构造函数中,因此它会调用它,但它不起作用。 (我得到一个警告,要求让课程最终 - 如果我这样做,我无法从我的JSF访问任何方法)
我收到的警告 - 构造函数中的可覆盖方法调用
代码太大我不能把它放在这里,我需要知道一个解决方案来克服这个
答案 0 :(得分:1)
知道我应该怎么做。我尝试将代码添加到Java构造函数中,因此它会调用它,但它不起作用。 (我得到一个警告,要求让课程最终 - 如果我这样做,我无法从我的JSF访问任何方法)
我收到的警告 - 构造函数中的可覆盖方法调用
这只是一个Netbeans警告,而不是Java编译错误。你的代码应该编译并运行得很好。 Netbeans只是试图变得聪明并暗示潜在的设计问题。您的构造函数正在调用同一个类的抽象方法。这是不是真的取决于我们一无所知的设计残余,但你应该意识到它可能会导致代码中的错误和错误。对我来说,至少没有理由为什么要调用抽象方法来预填充下拉列表,所以可能这根本不相关。
忽略并运行它。或者重新考虑你的设计方法。
答案 1 :(得分:0)
现在应该加载项目。
@ManagedBean
public class MyBean {
private List<SelectItem> items; // populate from DB
public List<SelectItem> getItems() { return items; }
// no need to setter
}
<h:selectOneMenu value="#{myBean.whatever}">
<f:selectITems value="#{myBean.items}" />
</h:selectOneMenu>
修改:关于填充值...
通常你有数据库服务并将它实例化(或注入它)到bean和填充项目,如items = service.loadItems()
。
也许您可能想要迭代它们,因为您需要使用String构造函数创建SelectItem值:)