Struts2列表无法';无法解决
请帮帮我。我要面对这个错误3天。我已经在网上搜索了所有的例子,但我没有找到答案 这些是我的文件: struts.xmlStruts2列表无法';无法解决,struts2,struts,Struts2,Struts,请帮帮我。我要面对这个错误3天。我已经在网上搜索了所有的例子,但我没有找到答案 这些是我的文件: struts.xml 有人有主意吗?您需要添加implementpreparable和method prepare(),并在这个method prepare colors列表中 应该是这样的: public class MenuAction extends ActionSupport implements Preparable{ private ArrayList<String>
有人有主意吗?您需要添加implementpreparable和method prepare(),并在这个method prepare colors列表中 应该是这样的:
public class MenuAction extends ActionSupport implements Preparable{
private ArrayList<String> colors;
private String yourColor;
public ArrayList<String> getColors() {
return colors;
}
public void setColors(ArrayList<String> colors) {
this.colors = colors;
}
public String getYourColor() {
return yourColor;
}
public void setYourColor(String yourColor) {
this.yourColor = yourColor;
}
public String asdf() {
colors = new ArrayList<String>();
colors.add("red");
colors.add("yellow");
colors.add("blue");
colors.add("green");
return SUCCESS;
}
@Override
public String execute() {
System.out.println("execute menu action");
return SUCCESS;
}
public void prepare() throws Exception {
colors = new ArrayList<String>();
colors.add("red");
colors.add("yellow");
colors.add("blue");
colors.add("green");
}
}
public class MenuAction扩展了ActionSupport实现了可准备的{
私有数组列表颜色;
私人色彩;
公共阵列列表getColors(){
返回颜色;
}
公共void集合颜色(ArrayList颜色){
这个。颜色=颜色;
}
公共字符串getYourColor(){
返回你的颜色;
}
public void setYourColor(字符串yourColor){
this.yourColor=yourColor;
}
公共字符串asdf(){
颜色=新的ArrayList();
颜色。添加(“红色”);
颜色。添加(“黄色”);
颜色。添加(“蓝色”);
颜色。添加(“绿色”);
回归成功;
}
@凌驾
公共字符串execute(){
System.out.println(“执行菜单操作”);
回归成功;
}
public void prepare()引发异常{
颜色=新的ArrayList();
颜色。添加(“红色”);
颜色。添加(“黄色”);
颜色。添加(“蓝色”);
颜色。添加(“绿色”);
}
}
您需要添加implement Preparable和method prepare(),并在此method prepare colors列表中
应该是这样的:
public class MenuAction extends ActionSupport implements Preparable{
private ArrayList<String> colors;
private String yourColor;
public ArrayList<String> getColors() {
return colors;
}
public void setColors(ArrayList<String> colors) {
this.colors = colors;
}
public String getYourColor() {
return yourColor;
}
public void setYourColor(String yourColor) {
this.yourColor = yourColor;
}
public String asdf() {
colors = new ArrayList<String>();
colors.add("red");
colors.add("yellow");
colors.add("blue");
colors.add("green");
return SUCCESS;
}
@Override
public String execute() {
System.out.println("execute menu action");
return SUCCESS;
}
public void prepare() throws Exception {
colors = new ArrayList<String>();
colors.add("red");
colors.add("yellow");
colors.add("blue");
colors.add("green");
}
}
public class MenuAction扩展了ActionSupport实现了可准备的{
私有数组列表颜色;
私人色彩;
公共阵列列表getColors(){
返回颜色;
}
公共void集合颜色(ArrayList颜色){
这个。颜色=颜色;
}
公共字符串getYourColor(){
返回你的颜色;
}
public void setYourColor(字符串yourColor){
this.yourColor=yourColor;
}
公共字符串asdf(){
颜色=新的ArrayList();
颜色。添加(“红色”);
颜色。添加(“黄色”);
颜色。添加(“蓝色”);
颜色。添加(“绿色”);
回归成功;
}
@凌驾
公共字符串execute(){
System.out.println(“执行菜单操作”);
回归成功;
}
public void prepare()引发异常{
颜色=新的ArrayList();
颜色。添加(“红色”);
颜色。添加(“黄色”);
颜色。添加(“蓝色”);
颜色。添加(“绿色”);
}
}
有三种方法
私有数组列表颜色;
”将其改为
private ArrayList colors=new ArrayList()拦截器ref name=“prepare”
拦截器ref name=“basicStack”
有三种方法可以做到这一点
私有数组列表颜色;
”将其改为
private ArrayList colors=new ArrayList()拦截器ref name=“prepare”
拦截器ref name=“basicStack”
简单地说,您直接访问页面,即menu2.jsp,而不处理任何操作,因此不初始化列表。 执行一个操作并在到达menu2.jsp的过程中初始化列表 这就是错误所说的
The requested list key 'colors' could not be resolved as a collection/array/map/enumeration/iterator type
希望这有助于简单地说,您直接访问页面,即menu2.jsp,而无需处理任何操作,因此不需要初始化列表。 执行一个操作并在到达menu2.jsp的过程中初始化列表 这就是错误所说的
The requested list key 'colors' could not be resolved as a collection/array/map/enumeration/iterator type
希望这有帮助我也有同样的问题;我删除了struts xml验证,它运行良好我也遇到了同样的问题;我删除了struts xml验证,它工作正常请求的列表键“colors”无法解析为集合/数组/映射/枚举/迭代器类型 尝试访问尚未创建的列表/集合时会发生此错误 可能是您正在直接调用action,即LoaclHost:8080/youraction.action 请确保在实例化action类后访问列表,即调用相应的action
如果您想在调用操作之前直接访问它,请将其设置为静态并在jsp中访问它 无法将请求的列表键“colors”解析为集合/数组/映射/枚举/迭代器类型 尝试访问尚未创建的列表/集合时会发生此错误 可能是您正在直接调用action,即LoaclHost:8080/youraction.action 请确保在实例化action类后访问列表,即调用相应的action
如果您想在调用操作之前直接访问它,请将其设置为静态并在jsp中访问它 在从jsp文件中的action类访问任何字段之前,您需要确保创建了action类对象,并且正确初始化了要访问的字段 在struts.xml中,对于操作“menu”,您已经配置为调用方法“asdf”。所以首先要注意的是,struts框架不会调用execute方法来执行您的操作“菜单”,而是调用ins
public class MenuAction extends ActionSupport implements Preparable{
private ArrayList<String> colors;
private String yourColor;
public ArrayList<String> getColors() {
return colors;
}
public void setColors(ArrayList<String> colors) {
this.colors = colors;
}
public String getYourColor() {
return yourColor;
}
public void setYourColor(String yourColor) {
this.yourColor = yourColor;
}
public String asdf() {
colors = new ArrayList<String>();
colors.add("red");
colors.add("yellow");
colors.add("blue");
colors.add("green");
return SUCCESS;
}
@Override
public String execute() {
System.out.println("execute menu action");
return SUCCESS;
}
public void prepare() throws Exception {
colors = new ArrayList<String>();
colors.add("red");
colors.add("yellow");
colors.add("blue");
colors.add("green");
}
}
The requested list key 'colors' could not be resolved as a collection/array/map/enumeration/iterator type
<!-- Define one extra action in struts.xml which redirects-->
<action name="invokeMenuActionFirst" class="com.struts.actions.MenuAction" method="input">
<result name="input">/menu2.jsp</result>
</action>
<a href="menu2.jsp">Link </a>
<%-- Replace links similar to above created using plain html markup with following struts2 markup. --%>
<a href="<s:url action='invokeMenuActionFirst'/>">Link </a>