<s:checkboxlist>
は、1つのチェックボックスのグループに対してチェックした値を送信するものですから、チェックしていない値を送信する機能はありません。
1つのチェックボックスのグループとは、つまり同じパラメータ名(name)をもつチェックボックスのことです。
チェックしていない値も送信したい場合= チェックボックスの名前(name)がそれぞれ異なる場合 です。例えば、以下のようになるでしょう。
html
1<%@ page contentType="text/html; charset=UTF-8" %>
2<%@ taglib prefix="s" uri="/struts-tags" %>
3<html>
4<body>
5<s:form action="register" method="POST">
6 <s:checkbox name="fish" value="fish" label="魚" />
7 <s:checkbox name="meat" value="meat" label="肉" />
8 <s:checkbox name="vegitable" value="vegitable" label="野菜" />
9 <s:submit value="送信" />
10</s:form>
11</body>
12</html>
これに対するActionクラスは、例えば以下のようになるでしょう。
(コード中に、Conventionプラグインと、Lombokのアノテーションを含めています。)
java
1import org.apache.struts2.convention.annotation.Action;
2import org.apache.struts2.convention.annotation.Namespace;
3import org.apache.struts2.convention.annotation.Result;
4import org.apache.struts2.convention.annotation.Results;
5
6import com.opensymphony.xwork2.ActionSupport;
7
8import lombok.Getter;
9import lombok.Setter;
10
11@Namespace("/food")
12@Results({
13 @Result(name = ActionSupport.SUCCESS, type = "dispatcher", location="food.jsp")
14})
15public class CheckBoxesAction extends ActionSupport {
16
17 @Action("display")
18 public String display() throws Exception {
19 return ActionSupport.SUCCESS;
20 }
21
22 @Action("register")
23 public String register() throws Exception {
24 return ActionSupport.SUCCESS;
25 }
26
27 @Getter @Setter
28 private boolean fish;
29
30 @Getter @Setter
31 private boolean meat;
32
33 @Getter @Setter
34 private boolean vegitable;
35}
36