【问题标题】:Checkboxes using struts使用 struts 的复选框
【发布时间】:2012-12-24 15:46:59
【问题描述】:

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

Checkbox1:Java Checkbox2:点网

对于员工 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。

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

【问题讨论】:

    标签: struts


    【解决方案1】:

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

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

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

    ComputationalSkill2=Java
    

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

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

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

    ComputationalSkill2=<blank space>
    

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

    这在使用&lt;html:checkbox&gt; 标记时是不可能的,因为它应该绑定到一个布尔属性。因此,您可以改为在表单 bean 中有一个属性 isJavaSkilled()/setJavaSkilled(),然后使用

    <html:checkbox property="javaSkilled"/>
    

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

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

    【讨论】:

    • 感谢尼泽特的回复。
    • 我有一个问题,在 formbean 中使用布尔 isJavaSkilled()/setJavaSkilled(),在提交时仅返回值 true 或 false。我喜欢在选中未选中的复选框时根据提交发送值 Java 和 C/C++。同样,我有两个 setter 和 getter 来获取这两个值,但是使用 并没有为 get 和 set 设置为字符串类型。你能告诉我如何处理这个问题。
    • &lt;html:checkbox&gt; 仅支持布尔值。这是记录在案的。正如我在回答中所说,您应该使用&lt;html:multibox&gt;
    • 我已经通过在 中使用 onchange() 函数解决了 Nizet 的问题,该函数在选中复选框时分配值并在选中时给出 null 值没有检查。但是感谢您的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多