The*_*heo 5 javascript ajax jsf
我正在尝试在单击按钮时执行 JavaScript 并同时在后台设置属性。执行 JS 代码有效,但未调用属性操作侦听器。但是,当我删除 onclick 属性时,单击命令按钮时将在后台设置属性。我也尝试过使用 actionListener。但同样的问题。这是我的 JSF 代码:
<rich:dataTable value="#{bean.items}" var="item">
<rich:column>
<a4j:commandButton value="Upload" onclick="Richfaces.showModalPanel('p-id');return false;">
<f:setPropertyActionListener target="#{bean.targetId}" value="#{item.id}" />
</a4j:commandButton>
</rich:column>
// more columns
</rich:dataTable>
Run Code Online (Sandbox Code Playgroud)
我在这里遗漏了什么吗?
该<a4j:commandButton>
组件生成一个 HTML<input type="submit">
元素以及一堆用于 ajax 魔法的 JS 代码,这与当前问题无关。
组件的属性作为同一 HTML 元素的属性onclick
生成。onclick
该属性通常引用一些 JavaScript 代码,这些代码在特定 HTML 元素上触发onclick
HTML DOM 事件时执行。click
当最终用户单击 HTML 元素时,会立即触发此事件,并且这是在调用 HTML 元素的默认操作(提交父表单)之前发生的。更重要的是,默认操作可以由 JavaScript 代码的布尔结果控制。如果返回false
,则不会执行默认操作。这就是您的情况所发生的情况。
如果您想同时调用onclick
属性中的 JavaScript 代码和HTML<input type="submit">
元素的默认操作,那么您必须 return true
,或者干脆删除该return false;
部分。