【问题标题】:"Property not found" with PrimeFaces RemoteCommandPrimeFaces RemoteCommand 的“找不到属性”
【发布时间】:2011-08-15 11:08:07
【问题描述】:

我正在尝试使用 RemoteCommnad 更新 Prime Faces PickList,并且在定义 updatePermission 属性时出现 javax.el.PropertyNotFoundException: Property 'updatePermissions' not found 异常。

这是我的 UI 定义文件:

<h:form>

              ...           

            <h:selectOneMenu id="groupsList" value="#{permissionsToGroupsBean.selectedGroup}" title="Select Group" onclick="updatePermissions()">
                <f:selectItems value="#{permissionsToGroupsBean.allGroups}" />
            </h:selectOneMenu>

              ....              

            <p:pickList 
                id="permissions" 
                value="#{permissionsToGroupsBean.permissionsPickList}" 
                var="permissionsPickList" 
                itemLabel="#{permissionsPickList}" 
                itemValue="#{permissionsPickList}" />

            ....

        </h:panelGrid>      

        <p:remoteCommand name="updatePermissions" actionListener="#{permissionsToGroupsBean.updatePermissions}" update="permissions"/>

这是应该处理 UI 的控制器:

public class PermissionsToGroupsBean implements Serializable {

    ...

    public void updatePermissions() {
        getPermissionsPickList().setTarget(getPermissionsForSelectedGroup());
    }
}

当我访问我得到的页面 URL 时:

javax.el.PropertyNotFoundException: Property 'updatePermissions' not found on type tld.company.admin.web.bean.PermissionsToGroupsBean javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193) javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170) javax.el.BeanELResolver.property(BeanELResolver.java:279) javax.el.BeanELResolver.getValue(BeanELResolver.java:60) com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) org.apache.el.parser.AstValue.getValue(AstValue.java:118) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:214) com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:155) com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:77) com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)

非常感谢任何帮助,谢谢。

【问题讨论】:

    标签: java jsf primefaces


    【解决方案1】:

    找到了...问题是 Prime Faces 出于某种原因无法处理 cmets ...

    我在问题中发布的那个下定义了一个注释掉的动作监听器:

    <p:remoteCommand name="updatePermissions" actionListener="#{permissionsToGroupsBean.updatePermissions}" update="permissions"/>
    
            <!-- <p:remoteCommand name="updatePermissions" update="permissions">  
                <f:setPropertyActionListener value="#{selectedPermissions}" target="#{permissionsToGroupsBean.updatePermissions}" />  
            </p:remoteCommand>  -->  
    

    我一删除它就起作用了。

    void 返回类型且无参数的签名有效:

    public void updatePermissions() {
        getPermissionsPickList().setTarget(getPermissionsForSelectedGroup());
    }
    

    【讨论】:

      【解决方案2】:

      actionListener="#{permissionsToGroupsBean.updatePermissions}"Im not familiar with the current version of PrimeFaces but generally theactionListenerproperty would be expected to return an object that implements theActionListenerinterface. Thus your expression would be resolved togetUpdatePermissions()` 不存在,因此您会收到该消息。

      如果您添加了该方法,您应该会看到返回值不是ActionListener 的另一个问题。

      &lt;p:remoteCommand&gt; 标记是否支持 action 属性?

      【讨论】:

      • 是的,它确实支持它。但是,根据主要面孔文档,也应该可以在没有该属性的情况下执行此操作。同样在这个问题中,您可以看到它在没有动作侦听器属性stackoverflow.com/questions/5367689/… 的情况下完成。
      • 我也尝试使用 get 方法前缀。我得到同样的错误。
      • @Simeon 您链接的问题只是说明了这一点:actionListener="#{bookmarklet.loadImages}" 这意味着loadImages 属性将定义 ActionListener(该方法没有链接源,因此我只能在这里做出假设)。对于重命名的方法,您得到相同的错误可能表明实际上,解析器查找名称为 getUpdatePerissions() 且返回类型为 ActionListener(或子类)的方法。由于该方法没有这样的返回类型,解析器仍然找不到它。
      【解决方案3】:

      updatePermissions(ActionEvent e) ?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-15
        • 2014-03-23
        • 2012-09-03
        • 2013-04-19
        • 2015-11-27
        • 1970-01-01
        相关资源
        最近更新 更多