如何检索表单提交的输入值

时间:2011-06-16 09:43:39

标签: jquery jsf

我使用jquery将值设置为jsf输入框。在事件处理程序中我找到了值,但是在表单提交时,值没有传递给bean。我的jquery代码

function setValue(){
    $("#inputbox").value("Johny");
}

<h:inputText id="inputbox" value="#{user.name}" onmouseover="$(this).val();"/>

如何在表单提交期间捕获此输入值?

3 个答案:

答案 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';