- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 JSF View 中,我有一个 p:selectCheckboxMenu
我想通过 AJAX 对选定的值执行一些业务逻辑。
对于一个简单的 change
事件它工作正常,但对于 toggleSelect
事件不是。在我的监听器方法中,我正在检索旧的选择,但我期待这里的新选择。
请参阅以下示例:
@ViewScoped
@Named
public class RequestBean implements Serializable {
private List<String> list; // + getter/setter
@PostConstruct
private void init() {
list = new ArrayList<String>() {{
add("one"); add("two"); add("three");
}};
}
public void listener() {
System.out.println("Current content of \"list\":");
for(String s : list) {
System.out.println(s);
}
}
}
<p:selectCheckboxMenu value="#{requestBean.list}" label="List">
<f:selectItem itemValue="one" itemLabel="one"/>
<f:selectItem itemValue="two" itemLabel="two"/>
<f:selectItem itemValue="three" itemLabel="three"/>
<p:ajax event="toggleSelect" listener="#{requestBean.listener}" />
<p:ajax event="change" listener="#{requestBean.listener}" />
</p:selectCheckboxMenu>
Info: Current content of "list":
Info: one
Info: two
Info: Current content of "list":
Info: one
Info: two
Info: three
GlassFish 4.1, running on Java 1.8.0_45
JSF 2.2.10 (Mojarra)
PrimeFaces 5.1
OmniFaces 1.8.1
最佳答案
这个问题似乎与过早调用监听器有关。做一些基本的调试,我发现 toggleSelect
在更新模型值之前调用监听器方法,而 change
事件在修改它们后执行。这是我目前的代码:
请求 bean :
@ViewScoped
@ManagedBean
public class RequestBean implements Serializable {
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
System.out.println("Values set: " + list);
}
private List<String> list;
@PostConstruct
private void init() {
list = new ArrayList<String>() {
{
add("one");
add("two");
add("three");
}
};
}
public void listener() {
System.out.println("Listener called!");
}
}
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:comp="http://java.sun.com/jsf/composite/comp"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head />
<h:body>
<h:form>
<p:selectCheckboxMenu value="#{requestBean.list}" label="List">
<f:selectItem itemValue="one" itemLabel="one" />
<f:selectItem itemValue="two" itemLabel="two" />
<f:selectItem itemValue="three" itemLabel="three" />
<p:ajax event="toggleSelect" listener="#{requestBean.listener}" />
<p:ajax event="change" listener="#{requestBean.listener}" />
</p:selectCheckboxMenu>
</h:form>
</h:body>
</html>
Values set: [one]
Listener called!
Values set: [one, two]
Listener called!
Listener called!
Values set: [one, two, three]
PhaseListener
:
Entering RESTORE_VIEW 1
Entering APPLY_REQUEST_VALUES 2
Entering PROCESS_VALIDATIONS 3
Entering UPDATE_MODEL_VALUES 4
Values set: [one]
Entering INVOKE_APPLICATION 5
Listener called!
Entering RENDER_RESPONSE 6
Entering RESTORE_VIEW 1
Entering APPLY_REQUEST_VALUES 2
Entering PROCESS_VALIDATIONS 3
Entering UPDATE_MODEL_VALUES 4
Values set: [one, two]
Entering INVOKE_APPLICATION 5
Listener called!
Entering RENDER_RESPONSE 6
Entering RESTORE_VIEW 1
Entering APPLY_REQUEST_VALUES 2
Listener called!
Entering PROCESS_VALIDATIONS 3
Entering UPDATE_MODEL_VALUES 4
Values set: [one, two, three]
Entering INVOKE_APPLICATION 5
Entering RENDER_RESPONSE 6
UPDATE_MODEL_VALUES
中。相,而
change
事件在
INVOKE_APPLICATION
执行理所当然,
toggleSelect
听众表演在
APPLY_REQUEST_VALUES
,在列表之前。
关于jsf-2 - PrimeFaces selectCheckboxMenu : Old values in toggleSelect actionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29746618/
old = [1, 2, 3] 下面两行有什么区别(如果有的话)? new = old[:] new = list(old) 更新 我已经接受了 ubershmekel 的回答,但后来我了解到一个有趣
我在不同的 table 上发现了两个类似的触发器。 create or replace TRIGGER "GM_OWNER".CHG_TYPE_TRG AFTER INSERT OR UPDATE O
我知道 CSS 中有 3 个版本的 FlexBox。旧版、Tweener 和新版:根据:http://css-tricks.com/old-flexbox-and-new-flexbox/ 我的问题:
我正在尝试编写一个小程序来替换从 Excel 文件中读取的单词。旧词和新词的格式相同,some_thing_else 或 Some_Thing_else。考虑下面的 2 个单词及其替换: someth
我们逐渐从一个旧的网络应用程序转移到一个新的。 到目前为止,两者都已部署:/old 和 /new。 现在,新的已完全发挥作用,我们想彻底删除旧的。问题是用户可能已将书签保存到旧的 webapp。 /o
在 ON CONFLICT DO UPDATE 中有一个“旧值”的别名? 我的现实生活问题是 INSERT INTO art.validterm (namespace,term,X,info)
当我使用Jasper作为接口(interface)时,有时接口(interface)会调用jasper并生成报告,然后我们会得到如下异常: ==============================
我的 data.fs 是 500 MB,所以我打包然后备份它,结果是 100 MB。 我的主机账户只有 500 MB,所以我想知道删除 data.fs.old (500 MB) 是否安全? 最佳答案
我参与了几个项目,这些项目主要涉及用"new"系统替换“旧”系统。始终存在这样一种模式,即在构建"new"系统的团队中几乎没有人真正了解“旧”系统。每当我对此提出疑问时,都会被告知这是有目的的……通过
当我取消选中一个复选框并且验证失败时,我希望该复选框保持未选中状态,而是被选中。 我的复选框: member == 1) ? 'checked' : '' }} {{ (old('member')
谁能帮助我了解何时在PLSQL块中使用:NEW和:OLD,但我发现很难理解它们的用法。 最佳答案 通常,您在trigger中使用这些术语,其中:old引用旧值,:new引用新值。 这是上面链接的Ora
我有一个 ES6 应用程序(带有 Babel 6.5 和 Webpack),它成功导入了我的模块,如下所示: import $ from 'jquery'; 我想安装https://github.co
下面的 C89 是合法的吗? void f(a) char a[sizeof &f]; { } 我的想法是肯定的,因为在任何 block 范围之外声明的标识符的范围在声明符结束后立即开始并延伸到翻译单
我正在使用一个提供 REST API 的应用程序。它仅适用于 GET 请求,通常最多花费 100 毫秒来处理最繁重的请求。 最近我们开始面临一个问题,即堆有时会被填满,而完整的 GC 会花费大量时间,
我们服务器的 JVM 标志(内存)如下所示 -Xms2048m -Xmx2048m -Xss512k -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMS
我正在使用 mysql 构建一些触发器。其中之一是检查插入的值是否存在于数据库中。 当触发器比较日期值时。它将返回 0 行。我尝试在 new.column 名称周围附加引号,但它的字面意思是“new.
我已经创建了这个触发器: CREATE TRIGGER trig_update AFTER INSERT ON "delivery" FOR EACH ROW EXECUTE PROCEDURE pr
当我尝试执行此脚本时,出现错误:错误:关系“旧”不存在。脚本: update organization set row_status = 30; 我发现了一些这样的问题,但他们没有帮助我。我的触发器:
在 PostgreSQL 中,我有这个表...(最左侧的“timestamp02”中有一个主键,此图中未显示,请不要打扰,它对于这个问题的目的并不重要) 在上表中,所有列都是通过查询输入的,除了“ti
在 PostgreSQL 中,我有这个表...(在最左侧的“stmtserial”中有一个主键序列列,此图中未显示) 在上表中,所有列都是通过查询输入的,除了“time_index”是通过 BEFOR
我是一名优秀的程序员,十分优秀!