作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:
<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");
}
最佳答案
存在三个问题:
您在 EL 中的监听器方法调用是错误的。您不应该将当前组件传递给它。
替换
valueChangeListener="#{userTypeController.permissionChanged(this)}"
通过
valueChangeListener="#{userTypeController.permissionChanged}"
您在支持 bean 中的方法签名是错误的。它应该符合 Java naming conventions .
替换
public void PermissionChanged(ValueChangeEvent event) {
通过
public void permissionChanged(ValueChangeEvent event) {
您似乎期望它在您单击复选框时立即触发(否则您会看到 ELException
)。这种期望是不正确的。它只会在您提交表单时被触发。使用 onclick="submit()"
是一个常见的黑客/解决方法。
也就是说,可能有更好的方法。由于功能需求不明确,无法提出正确的解决方案。我认为 <f:ajax>
如果您想要的只是即时和异步的反馈和重新渲染,这就是您正在寻找的。尽管您的问题中缺少 JSF 2.0 标记,但根据您的问题历史记录,您使用的是 JSF 2.0,因此 <f:ajax>
应该适合你。
关于java - 从未调用过 valueChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8215008/
背景 我最近在 merge 期间遇到了一个意外未 merge 的文档文件的问题。 无论出于何种原因,我搞砸了 merge 并有效地删除了文件(和其他几个文件),因为我忘记了它们的存在。 现在我想查看我
我在我的网站上使用旧的 mysql 版本和 php 版本 4。 我的表结构: | orders_status_history_id | orders_id | orders_status_id |
我是一名优秀的程序员,十分优秀!