您好我愿意更新从JSP上加载的数据库中获取的复选框的值。我正在创建员工档案。 Jsp有字段员工姓名,员工地址,员工技术技能。 员工技能具有以下复选框以选择以下值
Checkbox1:Java Checkbox2:Dot net
对于Employee 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>
以下代码完美地显示了具有上述任何技能且没有技能的员工的复选框。
我在这里遇到以下问题
任何人都可以告诉我如何获取复选框的更改值,例如,当我将状态从取消选中更改为检查状态时,应该在属性中设置值。
答案 0 :(得分: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属性为true,Struts将预先选中该复选框,如果它为false则保持未选中状态。
但请注意,由于您拥有可能存在或不存在的技能列表,因此您应该使用类型为getSkills()
的属性setSkills()
/ String[]
,并使用{ {1}}标记。