2015-02-06 39 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>