我知道网站上已经提出了类似的问题。但提交给他们的答案还没有满足我的问题。所以这是我的错误:
我项目的初始页面: 的 checkBoxList.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>
<body>
<s:form action="resultAction">
<h4>
<s:checkboxlist label="What's your favor color" list="colors"
name="yourcolor" value="defaultColor" />
</h4>
<s:submit value="submit" name="submit" />
</s:form>
</body>
</html>
我的结果页面: 的 result.jsp中
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<h1>Struts 2 multiple check boxes example</h1>
<h4>
Favor colors : <s:property value="yourColor"/>
</h4>
</body>
</html>
我的行动页面: 的 CheckBoxListAction.java
package com.vishal.common.action;
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
public class CheckBoxListAction extends ActionSupport{
private List<String> colors;
private String yourcolor;
public String getYourColor() {
return yourcolor;
}
public void setYourColor(String yourColor) {
this.yourcolor = yourColor;
}
public CheckBoxListAction(){
colors = new ArrayList<String>();
colors.add("red");
colors.add("yellow");
colors.add("blue");
colors.add("green");
}
public String[] getDefaultColor(){
return new String [] {"red", "green"};
}
public List<String> getColors() {
return colors;
}
public void setColors(List<String> colors) {
this.colors = colors;
}
public String execute() {
return SUCCESS;
}
public String display() {
return NONE;
}
}
我的struts.xml页面:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="checkBoxListAction"
class="com.vishal.common.action.CheckBoxListAction" method="display">
<result name="none">/checkBoxList.jsp</result>
</action>
<action name="resultAction" class="com.vishal.common.action.CheckBoxListAction">
<result name="success">/result.jsp</result>
</action>
</package>
</struts>
我认为我的web.xml页面可能没有问题。从我的文件夹结构开始,这里有项目名称: StrutsCheckbox
所以,如果有人可以帮我解决我的错误。
答案 0 :(得分:0)
关于您的错误,您尝试使用xml配置中没有映射的URL。您需要调用checkBoxListAction
来初始化colors
列表。此键应该在值堆栈中可用。要调用该操作,请使用此URL
http://localhost:8080/StrutsCheckbox/checkBoxListAction.action
答案 1 :(得分:0)
避免使用NONE
(这是一个特定的预定义结果,以防止在HttpResponse中写入任何输出)作为映射到某些内容的结果。要么使用自定义结果,要么只使用SUCCESS
(来自display()
或来自execute()
,只要它被映射就没关系;
将列表加载部件从构造函数移动到您的操作方法(以及将来的prepare()
方法或类似方法);
例如:
public String execute(){
colors = new ArrayList<String>();
colors.add("red");
colors.add("yellow");
colors.add("blue");
colors.add("green");
return SUCCESS;
}
<!-- if no METHOD is specified, execute() is called -->
<action name="checkBoxListAction" class="com.vishal.common.action.CheckBoxListAction">
<!-- if no NAME of result is specified, SUCCESS is assumed -->
<result>/checkBoxList.jsp</result>
</action>