2015-02-06 43 views
0

我知道,网站上提出了类似类型的问题。但提交到这些问题的答案并没有满足我的问题yet.So这里是我的错误:<s:checkboxlist>错误:现在已经看过它100次左右

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

回答

0

关于你的错误,你正在尝试使用在你的xml配置不是一个映射的URL。您需要调用checkBoxListAction来初始化colors列表。这个键应该在值栈中可用。要调用该动作使用这个网址

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

我一定要在地址栏手动输入这个网址? – 2015-02-09 12:38:35

+0

不,你不需要它,它可以被重定向。像在[this](http://stackoverflow.com/a/17615096/573032)中回答。 – 2015-02-09 12:44:45

0
  1. 避免使用NONE(这是一个预定义的具体结果,从写在任何的HttpResponse输出,防止)作为映射到什么结果。要么使用自定义结果,要么只使用SUCCESS(从display()或​​,只要它被映射就没关系);

  2. 将列表加载部分从构造函数移动到您的动作方法(以及将来使用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>