我使用jquery将值设置为jsf输入框。在事件处理程序中我找到了值,但是在表单提交时,值没有传递给bean。我的jquery代码
function setValue(){
$("#inputbox").value("Johny");
}
<h:inputText id="inputbox" value="#{user.name}" onmouseover="$(this).val();"/>
如何在表单提交期间捕获此输入值?
答案 0 :(得分:2)
如果你关闭JSF所做的元素ID的前置,那么你的jQuery代码(以及你的JS document.getElementById()
代码)将仅工作,以便在组件时防止重复的元素ID在包含模板中不止一次使用。
您可以将父prependId
的{{1}}属性设置为<h:form>
来完成此操作。
false
关于真正的问题:jQuery / JavaScript在客户端运行,它们与JSF在Web服务器中生成的HTML DOM树一起工作,Web服务器已经发送到webbrowser。右键单击Web浏览器中的页面,然后选择查看源。你看到了吗?像
这样的表格<h:form prependId="false">
生成如下:
<h:form id="myform">
<h:inputText id="myinput" />
您需要在jQuery / JS中使用这个客户端ID。由于<form id="myform">
<input type="text" id="myform:myinput" name="myform:myinput" />
是CSS选择器中的非法字符,因此您需要在jQuery中选择它有点不同:
:
然而,它在普通的JS中可以正常工作:
$("[id='myform:myinput']").val("newvalue");
答案 1 :(得分:0)
为输入文本命名(名称应与bean中的名称完全相同)
<h:inputText name="{user.name}" value="#{user.name}" onmouseover="$(this).val();"/>
in bean-the variable name should be-(i am just giving an example)
private name;
答案 2 :(得分:0)
使用javascript
document.getElementById('inputBox').value = 'Johny';