我有一个具有方法签名属性的组件。它可以被激活,但如果我把它放在<h:datatable> <h:column/>
并触发这个组件,它就不起作用。
当我再次刷新此页面或将其放在另一个地方时,它可以成功调用。如果有人能告诉我原因,我将不胜感激!
这是我的代码
<h:column>
<f:facet name="header">op:</f:facet>
<h:commandLink value="alter" action="#{userSession.alterAction}"
rendered="#{userSession.user.power.powerID == 1}">
<f:param name="beanId" value="#{book.bookID}" />
<f:param name="class" value="#{BookBean}" />
</h:commandLink>
<h:commandLink action="#{userSession.detailAction}" value="detail"
rendered="#{userSession.user != null}">
<f:param name="beanId" value="#{book.bookID}" />
<f:param name="class" value="#{BookBean}" />
</h:commandLink>
<h:commandLink action="#{bookAction.bookDelAction}"
onclick="return confirm('are you sure?')" value="delete"
rendered="#{userSession.user.power.powerID == 1}">
<f:param name="beanId" value="#{book.bookID}" />
</h:commandLink>
</h:column>
这个manageredBean#{bookAction}是requestScope,当我点击其中一个操作时,就像删除一样,它根本不起作用。但如果我把'delete'命令链接从<h:datatabel/>
中删除.it可以成功调用支持方法。真是太沮丧了!
谁可以告诉我<h:datatable/>
是否可以屏蔽.i,如果我将这些代码放在<h:form/>
.it中也可以调用!你可以告诉我原因!
答案 0 :(得分:1)
在表单提交请求期间,您需要保留与请求期间完全相同的数据模型(即value
的{{1}}属性所引用的数据模型)显示初始形式。这些症状表明您正在使用请求范围的bean,并且数据模型的加载基于某些请求参数,该参数在表单提交期间缺失和/或在bean(post)构造期间未完成加载。 / p>
将bean放在视图范围中和/或重新排列数据加载逻辑应修复它。