我们来详细讲解“复选框和Struts2后台交互代码详解”的完整攻略。
1. 复选框怎么用?
1.1 HTML中的复选框
在HTML中,复选框是通过input标签来定义的,type属性的值为checkbox。
<input type="checkbox" name="rememberMe" value="true"> Remember me
复选框的name属性和值会一起提交给服务器,如果勾选了复选框,则name属性和value属性的值会作为一个键值对被提交到服务器中。
1.2 Struts2中如何获取复选框的值?
在Struts2中,可以通过在Action类中定义一个同名的boolean类型的属性来接收复选框的值。例如如下的代码:
public class LoginAction extends ActionSupport {
private boolean rememberMe;
public void setRememberMe(boolean rememberMe) {
this.rememberMe = rememberMe;
}
// 其他属性和方法
}
在JSP页面中,要将复选框的值提交到Action中,需要将复选框的name属性设置为Action类中对应的属性名。例如,如果Action类中有一个叫做rememberMe的属性,则复选框的代码可以写成如下形式:
<input type="checkbox" name="rememberMe"> Remember me
这样在点击“提交”按钮时,Struts2框架会自动将复选框的值转换为boolean类型,并将其赋值给Action类中对应的属性。
2. Struts2后台交互代码详解
2.1 Action类的编写
在Action类中定义一个boolean类型的属性来接收复选框的值,然后可以在execute方法中处理提交的表单数据。
public class ExampleAction extends ActionSupport {
private boolean rememberMe;
public void setRememberMe(boolean rememberMe) {
this.rememberMe = rememberMe;
}
public String execute() throws Exception {
// 在这里处理提交的表单数据
return SUCCESS;
}
}
2.2 JSP页面的编写
在JSP页面中,通过input标签来定义复选框,name属性的值应该和Action类中定义的属性名称保持一致。
<s:form action="exampleAction">
<s:checkbox name="rememberMe" label="Remember me" fieldValue="true"/>
<s:submit/>
</s:form>
在这个例子中,我们使用了Struts2的标签库,并通过标签库的方式定义了复选框。label属性表示复选框的文本,fieldValue属性表示当复选框被选中时提交的值。
2.3 验证器的编写
如果需要对复选框的值进行验证,可以在Action类中使用Struts2的验证器来实现。例如:
public class ExampleAction extends ActionSupport {
private boolean rememberMe;
public void setRememberMe(boolean rememberMe) {
this.rememberMe = rememberMe;
}
@Override
public void validate() {
if (!rememberMe) {
addFieldError("rememberMe", "Please remember me");
}
}
public String execute() throws Exception {
// 在这里处理提交的表单数据
return SUCCESS;
}
}
在这个例子中,我们通过在validate方法中手动添加错误信息来验证复选框的值是否合法。如果复选框没有被选中,则添加一个fieldError。
3. 示例
3.1 示例1:判断用户是否勾选复选框
在这个示例中,我们需要让用户输入用户名和密码,并显示一个“Remember me”复选框。如果用户勾选了复选框,则在登录成功后会将用户名和密码记住。
Action类代码:
public class LoginAction extends ActionSupport {
private String username;
private String password;
private boolean rememberMe;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setRememberMe(boolean rememberMe) {
this.rememberMe = rememberMe;
}
public String execute() {
if ("admin".equals(username) && "admin".equals(password)) {
if (rememberMe) {
// 将用户名和密码保存到Cookie中
Cookie cookie1 = new Cookie("username", username);
cookie1.setMaxAge(60 * 60 * 24 * 30); // 30 days
Cookie cookie2 = new Cookie("password", password);
cookie2.setMaxAge(60 * 60 * 24 * 30);
ServletActionContext.getResponse().addCookie(cookie1);
ServletActionContext.getResponse().addCookie(cookie2);
}
return SUCCESS;
} else {
addActionError(getText("error.login"));
return ERROR;
}
}
}
JSP页面代码:
<s:form action="login">
<s:textfield name="username" label="Username"/>
<s:password name="password" label="Password"/>
<s:checkbox name="rememberMe" label="Remember me" fieldValue="true"/>
<s:submit/>
</s:form>
3.2 示例2:批量删除
在这个示例中,我们需要让用户勾选多个复选框,然后将勾选的复选框对应的数据删除。
Action类代码:
public class ExampleAction extends ActionSupport {
private List<Integer> ids;
public void setIds(List<Integer> ids) {
this.ids = ids;
}
public String execute() throws Exception {
// 删除所有选中的数据
for (Integer id : ids) {
deleteData(id);
}
return SUCCESS;
}
private void deleteData(Integer id) {
// 删除数据的具体实现
}
}
JSP页面代码:
<s:form action="exampleAction">
<s:iterator value="list">
<s:hidden name="ids" value="%{id}"/>
<s:checkbox name="check" fieldValue="%{id}"/>
<s:property value="name"/>
</s:iterator>
<s:submit/>
</s:form>
在这个例子中,我们使用了Struts2的迭代标签库
在以上两个示例中,我们通过HTML标签和Struts2标签来定义复选框,并通过Action类和JSP页面中的代码将它们连接起来。在第一个示例中,我们演示了如何将勾选状态保存到Cookie中;在第二个示例中,我们演示了如何删除多个数据。通过这些实例,我们可以深入了解复选框的使用方法,同时掌握Struts2框架中处理复选框的基本技巧。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:复选框和Struts2后台交互代码详解 - Python技术站