4

嗨,我愿意更新从数据库中获取并加载到 JSP 上的复选框的值。我正在创建员工资料。Jsp 具有员工姓名、员工地址、员工技术技能等字段。员工技能具有以下复选框以选择以下值

复选框 1:Java 复选框 2:点网

对于员工 X,在数据库中不具备 Java 和 Dot net 的计算技能。我能够从数据库中获取记录到 JSP。

在动作类中,我从数据库中获取值并将它们设置到具有两个 getter 和 setter 的 EmployeeForm 中。我也在使用 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>  

以下代码完美地为具有上述任何技能和没有技能的员工显示了复选框。

我在这里遇到以下问题

  1. 当我取消选中之前检查过的任何字段上的值时,该值在 bean 中完美地设置为 null。但是,当我检查之前未检查的任何字段上的值时(更新任何字段),在 bean 中没有为特定属性设置值,也没有 null。

谁能让我知道如何获取复选框的更改值,即当我将状态从取消选中更改为检查状态时,应该在属性中设置该值。

4

1 回答 1

5

如果员工具有 Java 技能,您将显示以下复选框:

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

这意味着在提交时,如果选中该复选框,将发送以下参数:

ComputationalSkill2=Java

如果员工没有 Java 技能,您将显示以下复选框:

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

这意味着在提交时,如果选中该复选框,将发送以下参数:

ComputationalSkill2=<blank space>

您想要的是始终生成相同的复选框(第一个),但如果员工具有 Java 技能,则预选它,如果员工没有 Java 技能,则不要预选它。

这在使用标签时是不可能的<html:checkbox>,因为它应该绑定到一个布尔属性。所以你可以在你的表单bean中有一个属性isJavaSkilled()/ ,并使用setJavaSkilled()

<html:checkbox property="javaSkilled"/>

如果表单的 javaSkilled 属性为真,Struts 将预先选中复选框,如果为假,则不选中它。

但是请注意,由于您有一个可以存在或不存在的技能列表,因此您应该拥有type的属性getSkills()/并使用标签。setSkills()String[]<html:multibox>

于 2012-12-24T16:49:19.357 回答