我想在动作后发送一些值,这是我的代码:
<a4j:commandButton styleClass="button default" value="#{msg['cat.base.gdb.compte.valid']}" action = "validar" oncomplete = "javascript:document.forms['form_0'].enviaDades.click();" />
<h:commandButton type="submit" styleClass="button default" value="#{msg['cat.base.gdb.canviar.pais']}" action="canviPais" />
<a4j:commandLink styleClass="button default" id="enviaDades" onclick="javascript:actualitzarFormulariGDB(
'#{gdbBB.retorn.ideef}',
'#{gdbBB.retorn.ibanElectronic}',
'#{gdbBB.retorn.ibanPaper}',
'#{gdbBB.retorn.bic}');" value = "Això és una prova" />
该操作似乎完美无缺,如果我查看代码页,值会发生变化,但是oncomplete不起作用,这里发生了什么?
TY。
答案 0 :(得分:1)
来自doc(oncomplete):
更新DOM后要调用的客户端脚本方法
在您的情况下,DOM未更新,因为您定义了action="validar"
,这将以页面重定向结束。您使用的是a4j:commandButton
,如普通h:commandButton
。
答案 1 :(得分:0)
最后,我这样做......我不知道是否是更好的解决方案...
<script type="text/javascript">//onload page become to work
<!--
var myvar=setInterval('prepararDadesRetorn()', 100);
-->
</script>
<div class="right">
<h:commandButton type="submit" styleClass="button default" value="#{msg['cat.base.gdb.compte.valid']}" action = "validar"/>
<h:commandButton type="submit" styleClass="button default" value="#{msg['cat.base.gdb.canviar.pais']}" action="canviPais" />
<h:commandButton styleClass="button" value ="#{msg['cat.base.gdb.sortir']}" style="display:inline;" onclick="javascript:window.close();"/>
</div>
<script type="text/javascript">
<!--
function prepararDadesRetorn() {
if('#{gdbBB.compteValid}'== 'true'){
actualitzarFormulariGDB(
'#{gdbBB.retorn.ideef}',
'#{gdbBB.retorn.ibanElectronic}',
'#{gdbBB.retorn.ibanPaper}',
'#{gdbBB.retorn.bic}');
}
}
-->
</script>
如果验证正确,我将值发送到具有布尔条件的另一个表单。 TY。