我正在尝试使用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)
非常感谢您的帮助,谢谢。
发布于 2011-08-15 20:08:59
找到了..。问题是Prime Faces由于某种原因不能处理评论。
我在问题中发布的操作监听器下面定义了一个注释掉的操作监听器:
<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());
}发布于 2011-08-15 19:33:32
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的另一个问题。
相反,<p:remoteCommand>标记是否支持action属性?
发布于 2011-08-15 19:35:22
updatePermissions(ActionEvent e)?
https://stackoverflow.com/questions/7064238
复制相似问题