Jsf ui:repeat - 即使提交不同的表单,也可以访问填充值的方法



在我的实际项目中,我注意到填充ui:repeat标签的方法在有post调用时被调用,即使ui:repeat不是提交表单的一部分。

我一直在尝试检查 jsf 文档是否是它应该工作的方式,但没有成功。

它应该以这种方式工作吗?

提前谢谢。

示例代码:

单击按钮时,将调用另一个Bean.getCollection的方法:

<h:form id="firstForm">  
    <h:commandButton action="#{someBean.someAction}"/>   
</h:form>
<h:form id="secondForm">  
    <ui:repeat var="product" value="#{anotherBean.populatCollection}" >  
        <!-- CODE -->  
    </ui:repeat>  
</h:form>

首先,getter 方法根本不应该填充值。getter 方法应该,顾名思义,只返回已经填充的值。

您对具体的功能要求不是很清楚,即您打算在何时填充值,但一种方法是将填充逻辑移动到#{anotherBean}@PostConstruct

@ManagedBean
@ViewScoped
public class AnotherBean {
    private List<Something> getCollection; // Terrible variable name by the way.
    @PostConstruct
    public void init() {
        getCollection = populateItSomehow();
    }
    public List<Something> getGetCollection() {
        return getCollection; // See, just return the property, nothing more!
    }
}

另请参阅:

  • 为什么 JSF 多次调用 getter

因此,看起来ui:repeat标签在完成发布时调用分配给其value参数的方法,无论帖子是否从另一个表单完成。

感谢您的帮助。

相关内容

  • 没有找到相关文章

最新更新