2011-06-16 49 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";