【问题标题】:JSF does not call setter method of selected ItemJSF 不调用所选项目的 setter 方法
【发布时间】:2013-07-18 13:19:44
【问题描述】:

这是一个 JSF 1.1 表单

<h:form>
    <h1>STEP 1 - Choose your channels</h1>        
        <h:selectManyCheckbox value="#{globalTVRegistration.selectedChannels}" layout="pageDirection">
            <f:selectItems value="#{globalTVRegistration.availableChannels}" />                
        </h:selectManyCheckbox>
    <h:commandButton value="Select Channels" action="packages" />
</h:form>

及其对应的支持bean

public class GlobalTVRegistration {

    private int[] selectedChannels;

    public int[] getSelectedChannels() {
        return selectedChannels;
    }

    public void setSelectedChannels(int[] selectedItems) {
        this.selectedChannels = selectedItems;
    }

}    

当我选择一个或多个复选框并单击命令按钮时,会再次刷新同一页面。表单提交不调用setSelectedChannels(int[] selectedItems)

你能找出问题所在吗?

【问题讨论】:

  • JSF 1.1 有几个令人痛苦的错误。考虑升级到最新的 JSF 1.2。您可以从javaserverfaces.java.net 获得它。顺便说一句,在 getter 方法中执行业务逻辑是一个坏主意。将该代码移动到构造函数 public GlobalTVRegistration() 并在 getter 中保留单行 return availableChannels;

标签: forms integer int setter jsf-1.2


【解决方案1】:

如果其他人也遇到同样的问题,在线

private int[] selectedChannels;

int 数据类型替换为 Integer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2012-09-01
    相关资源
    最近更新 更多