2011-06-16 51 views
0

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

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

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

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

回答

0

给名字输入文本(名称应该是完全一样的,因为它是在豆)

<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; 
+0

我想它不是加工。 – Achaius 2011-06-16 10:03:05

0

它使用JavaScript

document.getElementById('inputBox').value = 'Johny'; 
+0

这很好...你的代码可以是jQuery或者javascript,但是我的问题是它如何被映射到bean而没有名称属性呢? – Vivek 2011-06-16 10:44:37

+0

@Vivek:JSF生成它。 – BalusC 2011-06-16 10:55:06

2

jQuery代码(和你的JS document.getElementById()代码)工作将只有工作,如果您关闭了JSF所做的元素ID的前置操作,以防止在包含模板中多次使用组件时重复元素ID。

您可以通过将父项<h:form>prependId属性设置为false来完成此操作。

<h:form prependId="false"> 

至于真正的问题:jQuery的/ JavaScript的运行在客户端和他们的作品与JSF的Web服务器已生成的HTML DOM树和网络服务器已发送到网页浏览器。用鼠标右键单击网页浏览器中的页面,然后选择查看源文件。你看到了吗?像

<h:form id="myform"> 
    <h:inputText id="myinput" /> 

一个形式获取生成类似如下:

<form id="myform"> 
    <input type="text" id="myform:myinput" name="myform:myinput" /> 

您需要确切使用此客户端ID jQuery中/ JS。由于:是CSS选择器非法字符,你需要在不同的jQuery选择它一点:

$("[id='myform:myinput']").val("newvalue"); 

但是它工作正常,如纯JS如下:

document.getElementById("myform:myinput").value = "newvalue";