Raj*_*pta 5 datatable jsf commandlink jsf-2 commandbutton
我试图执行一个action通过commandButton内部的dataTable,但action在时不调用commandButton被放置在数据表中,如下图所示
<h:form>
<h:dataTable value="#{bean.list}" var="item">
<h:column>
<h:commandButton value="submit" action="#{bean.submit}" />
</h:column>
</h:dataTable>
</h:form>
Run Code Online (Sandbox Code Playgroud)
当我commandButton移出时dataTable,action成功执行.数据表内部有什么问题commandButton?该commandLink有同样的问题.
Bal*_*usC 15
当列表后面会发生这个问题#{bean.list}是不是处理表单提交,因为它是显示形式的请求期间的HTTP请求时完全一样.JSF将重新遍历列表以找到按下的按钮并调用其动作.
如果bean是请求范围的并且在bean(post)构造期间没有重新填充列表,或者列表的填充依赖于在表单提交期间丢失的请求范围变量,那么JSF将在处理时检索空的或完全不同的列表表单提交,因此无法找到按下的按钮,也不会调用任何操作.
最好的解决方法是将bean放在视图范围内,并确保以正确的方式加载数据模型.
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
private List<Item> list;
@EJB
private ItemService service;
@PostConstruct
public void init() {
list = service.list();
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9594 次 |
| 最近记录: |