Jsf 2 未更新Bean属性

Jsf 2 未更新Bean属性,jsf-2,primefaces,managed-bean,method-invocation,Jsf 2,Primefaces,Managed Bean,Method Invocation,我的bean是可视范围的。我有一个带有getter和setter的简单字符串属性。getter可以正常工作(通过初始化属性进行检查),但setter不能。在setter方法中,我使用每个传入参数构建一个Stringbuffer 代码: 这不对吗?我在setter中进行了测试,以查看输入字符串是否被传递,但显然根本没有调用/调用该方法。在视图中,我使用{}符号 视图: 为什么我要在setter方法中构建stringbuffer?因为,inputtext是基于动态列表动态创建的。我只有一个bea

我的bean是可视范围的。我有一个带有getter和setter的简单字符串属性。getter可以正常工作(通过初始化属性进行检查),但setter不能。在setter方法中,我使用每个传入参数构建一个Stringbuffer

代码:

这不对吗?我在setter中进行了测试,以查看输入字符串是否被传递,但显然根本没有调用/调用该方法。在视图中,我使用{}符号

视图:


为什么我要在setter方法中构建stringbuffer?因为,inputtext是基于动态列表动态创建的。我只有一个bean属性要绑定


我知道我可以使用映射,但出于与上面相同的原因,我似乎无法在setter方法中更新映射值。这与我在这里提出的问题有关

即使方法完全错误(提交表单后getter不会返回正确的值!),而且我已经回答了您关于使用映射的问题,在这种特殊情况下确实应该调用setter


不调用setter可能有几个原因。最著名的是表单没有放置在
中,或者您错误地将多个
嵌套在彼此内部。另一个原因是,输入组件或其父组件有一个
呈现的
属性,该属性在提交请求期间碰巧计算
false

即使方法完全错误(提交表单后getter不会返回正确的值!),而且我已经回答了您关于使用映射的问题,在这种特殊情况下,应该真正调用setter


不调用setter可能有几个原因。最著名的是表单没有放置在
中,或者您错误地将多个
嵌套在彼此内部。另一个原因是,输入组件或其父组件之一具有一个
呈现的
属性,该属性在提交请求过程中碰巧求值为
false

向导组件位于对话框组件内的。此窗体内和对话框组件中都没有其他窗体。在视图中,渲染属性没有设置为false的地方。我想我需要查看视图树来确定这一点。发生了一些奇怪的事情。我用标签替换了标签,现在setter可以工作了。为什么会这样?显然您依赖于视图渲染时间表达式。长话短说:向导组件位于对话框组件中的。此窗体内和对话框组件中都没有其他窗体。在视图中,渲染属性没有设置为false的地方。我想我需要查看视图树来确定这一点。发生了一些奇怪的事情。我用标签替换了标签,现在setter可以工作了。为什么会这样?显然您依赖于视图渲染时间表达式。长话短说:
public String getParamval() {
    return paramval;
}

public void setParamval(String paramval) {
    logger.info("Incoming value:" + paramval);
    pvals.append(paramval);
    this.paramval = "VAL";
}
<c:forEach items="${gdsiGeodataBean.requiredfields}" var="reqs">
        <h:outputLabel  value="#{reqs}:* " />  
        <pou:inputText value="#{gdsiGeodataBean.paramval}" required="true" requiredMessage="Input is required."/> 
</c:forEach>