我有以下几段代码:
<h:panelGroup rendered="#{userTypeController.permissionItemsUserType.contains(item)}">
<h:selectBooleanCheckbox valueChangeListener="#{userTypeController.permissionChanged(this)}" value="#{true}"/>
<h:outputText value="#{item.getAction()}" />
</h:panelGroup>
<h:panelGroup rendered="#{!userTypeController.permissionItemsUserType.contains(item)}">
<h:selectBooleanCheckbox value="#{false}"/>
<h:outputText value="#{item.getAction()}" />
</h:panelGroup>但是由于某些原因,permissionChanged方法从未被调用过。你知道可能出了什么问题吗?
我的permissionChanged方法:
public void PermissionChanged(ValueChangeEvent event) {
System.out.println("test");
}发布于 2011-11-22 00:43:44
有三个问题:
替换
valueChangeListener="#{userTypeController.permissionChanged(this)}“
通过
支持bean中的valueChangeListener="#{userTypeController.permissionChanged}"
替换
公共空事件(ValueChangeEvent PermissionChanged){
通过
public void permissionChanged(ValueChangeEvent PermissionChanged){
ELException)。这种期望是不正确的。它只会在您提交表单时触发。使用onclick="submit()"是解决此问题的常见方法。也就是说,可能有更好的方法来解决这一问题。由于功能需求不明确,因此无法提出正确的解决方案。我认为,如果您想要的是即时和异步的反馈和重新呈现,那么<f:ajax>就是您正在寻找的东西。尽管您的问题中缺少JSF2.0标记,但根据您的问题历史记录,您使用的是JSF2.0,因此<f:ajax>应该适用于您。
发布于 2011-11-22 00:33:31
如果使用JSF1.2,则不能将参数传递给listener。您可以使用:
"#{userTypeController.permissionChanged}" 阅读here。
https://stackoverflow.com/questions/8215008
复制相似问题