JSF2和JavaScript—提交大量项,但没有那么多setter

JSF2和JavaScript—提交大量项,但没有那么多setter,java,javascript,forms,jsf,selectonemenu,Java,Javascript,Forms,Jsf,Selectonemenu,我有一张大约90项的表格。有没有一种方法可以收集生成的值,而不必在服务器端设置那么多的setter?我不能解析用JavaScript生成的列表/数组/对象吗?这对我有很大帮助 非常感谢,, Martijn创建地图属性 @ManagedBean @ViewScoped public class Bean { private Map<String, String> selectedItems = new HashMap<String, String>();

我有一张大约90项的表格。有没有一种方法可以收集生成的值,而不必在服务器端设置那么多的setter?我不能解析用JavaScript生成的列表/数组/对象吗?这对我有很大帮助

非常感谢,, Martijn

创建地图属性

@ManagedBean
@ViewScoped
public class Bean {

    private Map<String, String> selectedItems = new HashMap<String, String>();

    public Map<String, String> getSelectedItems() {
        return selectedItems;
    }

    // ...
}
可以用作

<h:selectOneMenu value="#{bean.selectedItems.one}">
    ...
</h:selectOneMenu>

在这里,一个成为映射键,所选项目成为映射值

是的,不需要设置器


另一种更新方法是在列中使用。这样,您可以只使用一个列表getter,而不需要一个setter。另请参见上的答案,以获取示例。

Setters-getter在服务器上运行,JS在客户端运行,难道我不能解析我用JavaScrip t生成的列表/数组/对象吗,请说清楚啊,这很容易。当有网络表单时,我可以填写该表单。当我按submit时,我希望将结果解析到服务器。但我不想在我的bean中有90个getter/setter,而这是不需要的。如果在JS中用一些对象/数组/任何东西以及你的聪明才智都能很容易地解决这个问题,那将是非常理想的。我不认为这是个问题。@JSS:我认为你对JSF不太了解。@BC:这是非常苛刻的评论。好的,我不需要告诉abt我的专家水平,也不需要太过个人化和尊重你的评级。你真的需要阅读并理解这个问题。@JSS你的问题也同样苛刻。你没有解释你认为OP实际上在问什么,你在暗示我的答案是错误的。@BC-如果你觉得那样做是无意的,我向你道歉。我认为OP要求一次性收集表单中的所有值,并在服务器端的单个变量中检索。逗号分隔或其他分隔符。这可以通过客户端的javascript进行收集,也可以在服务器上使用FacesContext进行收集,这是一种非常糟糕的做法。这就是我的想法,OS是最好的确认人。
<h:selectOneMenu value="#{bean.selectedItems['one']}">
    ...
</h:selectOneMenu>