2012-12-24 41 views
4

嗨,我願意更新從數據庫中提取的,加載到JSP上的複選框的值。我正在創建一個員工檔案。 Jsp具有員工姓名,員工地址,員工技術技能字段。 的僱員技能有以下複選框以選擇以下值使用struts的複選框

Checkbox1:Java的Checkbox2:點網

對於員工的X,不同時在數據庫中計算技能Java和點網。我可以將記錄從數據庫中提取到JSP中。

在操作類中,我從數據庫中提取值並將其設置到EmployeeForm中,該EmployeeForm具有兩個getter和setter。我正在使用setattribute在請求中設置這些值。

在EmployeeUpdate.jsp我做了以下

String skillsValue1=(String)request.getAttribute("C/C++"); 
String skillsValue2=(String)request.getAttribute("Java"); 

<%if(skillsValue1!=null){ %> 
     <html:checkbox property="ComputationalSkill1" value="C/C++"/>      
      <%}else{ %> 
       <html:checkbox property="ComputationalSkill1" value=" "/> 
       <%}%> 
      </td>   

<%if(skillsValue2!=null){ %> 
     <html:checkbox property="ComputationalSkill2" value="Java"/>      
      <%}else{ %> 
       <html:checkbox property="ComputationalSkill2" value=" "/> 
       <%}%> 
      </td> 

下面的代碼顯示的複選框完美與上述任何技能,沒有技能的員工。

當我取消對任何領域,這是早期檢查,該值在bean完全設置爲空值,我到這兒

  1. 以下問題。 但是,當我檢查任何字段上的值(以前未檢查的值)(更新任何字段)時,沒有在bean中爲特定屬性設置任何值,也不爲null。

任何人都可以讓我知道如何獲取更改的複選框值,我,當我將狀態從取消選中狀態更改爲檢查狀態時,值應該在屬性中設置。

回答

5

如果僱員技能的Java,你顯示以下複選框:

<html:checkbox property="ComputationalSkill2" value="Java"/> 

這意味着,在提交,如果複選框被選中,下面的參數將被髮送:

ComputationalSkill2=Java 

如果員工不具備技能的Java,你顯示以下複選框:

<html:checkbox property="ComputationalSkill2" value=" "/> 

這意味着,在提交,如果複選框被選中,下面的參數將被髮送:

ComputationalSkill2=<blank space> 

你需要的是產生總是相同的複選框(第一個),但預選,如果員工有技能Java,如果員工不具備Java技能,則不預先選擇它。

這是不可能的,因爲它使用<html:checkbox>標記,因爲它應該綁定到布爾屬性。所以,你可以,而不是在你的form bean的屬性isJavaSkilled()/setJavaSkilled(),並使用

<html:checkbox property="javaSkilled"/> 

Struts將會預先選擇的複選框,如果窗體的javaSkilled屬性爲true,並選擇它,如果它是假的離開。

不過請注意,既然你有能力,可以是或不存在一個列表,則應該有一個屬性String[]getSkills()/setSkills(),並使用<html:multibox>標籤。

+0

感謝您對Nizet的回覆。 – user1879683

+0

我有一個問題,在formbean中使用布爾值isJavaSkilled()/ setJavaSkilled(),在提交時僅返回值true或false。我喜歡根據提交發送Java和C/C++值,以檢查未選中的複選框。再次,我有兩個setter和getters來獲取這兩個值,但是使用沒有爲get獲得並設置爲字符串類型。你能告訴我如何處理這個問題。 – user1879683

+2

''只支持布爾值。這是記錄。正如我在我的回答中所說的,你應該使用'' –