【问题标题】:Error in JSF 2 with Ajax call to update parts based on request parameters使用 Ajax 调用根据请求参数更新部件的 JSF 2 中的错误
【发布时间】:2011-08-16 17:32:20
【问题描述】:

我对@9​​87654321@ 2 很陌生。我正在尝试使用 Ajax 渲染组件,具体取决于用户选择的复选框。例如,复选框 1、框 2 和框 3。

每当我选择一个复选框时,我都会遇到一些错误。

错误信息:

serverError: class javax.faces.component.UpdateModelException/ajaxcall.xhtml@27,
54 value="#{bean.panels}": Property 'panels' not writable on type java.util.List

下面是我的 XHTML 代码。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <h:head><title>JSF 2.0: Blank Starting-Point Project</title>
    </h:head>

    <h:body>
        <h:panelGroup id="panels">
            <h:panelGroup rendered="#{bean.panels.contains('u1')}">
                panel one
            </h:panelGroup>
            <h:panelGroup rendered="#{bean.panels.contains('u2')}">
                panel two
            </h:panelGroup>
            <h:panelGroup rendered="#{bean.panels.contains('u3')}">
                panel three
            </h:panelGroup>
        </h:panelGroup>

        <h:form>
            <h:selectManyCheckbox value="#{bean.panels}">
                <f:selectItem itemValue="u1" />
                <f:selectItem itemValue="u2" />
                <f:selectItem itemValue="u3" />
                <f:ajax render=":panels" />
            </h:selectManyCheckbox>
        </h:form>
    </h:body>
</html>

这是我的豆子:

package somePackage;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class Bean {
    private List<String> panels = new ArrayList<String>();

    public List<String> getPanels() {
        return panels;
    }
}

我错过了什么吗?

【问题讨论】:

  • 我很好奇为什么这会收到两个反对票?

标签: java ajax jsf-2


【解决方案1】:

这个错误有点误导,但你也需要一个 setter。

public void setPanels(List<String> panels) {
    this.panels = panels;
}

【讨论】:

  • 感谢 BalusC 它现在可以工作了!这为我节省了大量的谷歌搜索时间。
猜你喜欢
  • 2011-08-08
  • 2012-09-14
  • 2015-02-11
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多