<s:checkboxlist>错误:现在已经看过100次</s:checkboxlist>

时间:2015-02-06 17:19:12

标签: jsp struts2 checkboxlist

我知道网站上已经提出了类似的问题。但提交给他们的答案还没有满足我的问题。所以这是我的错误:

enter image description here

我项目的初始页面: 的 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

所以,如果有人可以帮我解决我的错误。

enter image description here

2 个答案:

答案 0 :(得分:0)

关于您的错误,您尝试使用xml配置中没有映射的URL。您需要调用checkBoxListAction来初始化colors列表。此键应该在值堆栈中可用。要调用该操作,请使用此URL

http://localhost:8080/StrutsCheckbox/checkBoxListAction.action 

答案 1 :(得分:0)

  1. 避免使用NONE(这是一个特定的预定义结果,以防止在HttpResponse中写入任何输出)作为映射到某些内容的结果。要么使用自定义结果,要么只使用SUCCESS(来自display()或来自execute(),只要它被映射就没关系;

  2. 将列表加载部件从构造函数移动到您的操作方法(以及将来的prepare()方法或类似方法);

  3. 例如:

    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>