读书人

大家帮小弟我看看这是咋回事?

发布时间: 2012-01-19 00:22:28 作者: rapoo

大家帮我看看这是怎么回事??
在做Struts2 OptionTransferSelect标签使用练习时,想实现一个“双向选择器”,并找到了一段这样的代码:
1. Action层
TransferSelect.java

package com.mobilesoft.esales.webapp.action;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

import org.apache.log4j.Logger;

public class TransferSelect extends BaseAction {

private static final Logger logger = Logger.getLogger(DoubleListAction.class);

String[] leftRoles;

String[] rightRoles;

public String execute(){

return SUCCESS;

}

public String transferSelect(){

ArrayList<Roles> leftList=new ArrayList<Roles> ();

Roles leftRoles1=new Roles();

leftRoles1.setRoleId(1);

leftRoles1.setRoleName("角色1");

Roles leftRoles2=new Roles();

leftRoles2.setRoleId(2);

leftRoles2.setRoleName("角色2");

Roles leftRoles3=new Roles();

leftRoles3.setRoleId(3);

leftRoles3.setRoleName("角色3");

Roles leftRoles4=new Roles();

leftRoles4.setRoleId(4);

leftRoles4.setRoleName("角色4");

leftList.add(leftRoles1);

leftList.add(leftRoles2);

leftList.add(leftRoles3);

leftList.add(leftRoles4);

ArrayList<Roles> rightList=new ArrayList();

Roles rightRoles1=new Roles();

rightRoles1.setRoleId(1);

rightRoles1.setRoleName("角色5");

Roles rightRoles2=new Roles();

rightRoles2.setRoleId(2);

rightRoles2.setRoleName("角色6");

Roles rightRoles3=new Roles();

rightRoles3.setRoleId(3);

rightRoles3.setRoleName("角色7");

Roles rightRoles4=new Roles();

rightRoles4.setRoleId(4);

rightRoles4.setRoleName("角色8");

rightList.add(rightRoles1);

rightList.add(rightRoles2);

rightList.add(rightRoles3);

rightList.add(rightRoles4);

getRequest().setAttribute("rightList", rightList);

getRequest().setAttribute("leftList", leftList);

return SUCCESS;

}

public String transferSelectPost(){

Map map=getRequest().getParameterMap();

Set set=map.entrySet();

Iterator iterator=set.iterator();

while(iterator.hasNext()){

Map.Entry mapEntry=(Map.Entry)iterator.next();

if(mapEntry.getValue() instanceof String[]){

String[] selectValues=(String[])mapEntry.getValue();

for(int i=0;i<selectValues.length;i++){

logger.fatal("For map test,The key is: "+mapEntry.getKey()+",value is :"+selectValues[i]);

}

}


}

for(int i=0;i<leftRoles.length;i++){

logger.fatal("For Array test,The leftRoles roleName is: "+leftRoles[i]);

}

for(int i=0;i<rightRoles.length;i++){

logger.fatal("For Array test,The rightRoles roleName is: "+rightRoles[i]);

}

getRequest().setAttribute("map", map);

return SUCCESS;

}

public void setLeftRoles(String[] leftRoles) {

this.leftRoles = leftRoles;

}

public void setRightRoles(String[] rightRoles) {

this.rightRoles = rightRoles;

}

}

Roles.java

package com.mobilesoft.esales.webapp.action;

public class Roles {
private Integer roleId;
private String roleName;
public Roles(){
}
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
}

2. Web层
transferselect.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

<%@ page language="java" errorPage="/error.jsp" pageEncoding="GBK" contentType="text/html;charset=GBK" %>

<html>

<head>

<title>Struts 2 Cool Tags - OptionTransferSelect</title>

<s:head theme="ajax"/>

</head>

<body>

<h2>用户角色授权</h2>

<s:form action="transferSelectPost" name="form1" >

<s:optiontransferselect

label="测试-Action数据"

name="leftRoles"

leftTitle="用户已授权角色"

list="#request.leftList"

listKey="roleId"

listValue="roleName"

multiple="true"

headerKey="headerKey"

headerValue="--- 请选择用户角色 ---"

emptyOption="false"

allowUpDownOnLeft="false"

cssStyle="width:200px;height:300px;"

rightTitle="用户未授权的角色"

doubleList="#request.rightList"

doubleListKey="roleId"

doubleListValue="roleName"

doubleName="rightRoles"

doubleHeaderKey="doubleHeaderKey"

doubleHeaderValue="--- 请选择用户角色 ---"

doubleEmptyOption="false"

doubleMultiple="true"

allowUpDownOnRight="false"

doubleCssStyle="width:200px;height:300px;"

/>

<s:submit align="left"/>

</s:form>

</body>

</html>



transferselectpost.jsp


<%@ taglib prefix="s" uri="/struts-tags" %>

<%@ page language="java" errorPage="/error.jsp" pageEncoding="GBK" contentType="text/html;charset=GBK" %>

<html>

<head>

<title>Struts 2 Cool Tags - OptionTransferSelect</title>

<s:head />

</head>

<body>

<h2>选择结果</h2>

<s:form action="transferSelect" name="form1" >

<s:iterator value="#request.map" status="mystatus">

<tr>

<td>

<s:property value="key" />:<s:property value="value" />,

</td>

</tr>

</s:iterator>

<s:submit align="left"/>

</s:form>

</body>

</html>

3. struts.xml
<action name="transferSelect" method="transferSelect" class="com.mobilesoft.esales.webapp.action.TransferSelect">

<result name="success">test/transferselect.jsp</result>

</action>

<action name="transferSelectPost" method="transferSelectPost" class="com.mobilesoft.esales.webapp.action.TransferSelect">

<result name="success">test/transferselectpost.jsp</result>

</action>

我试了一下,报如下错误:
1."BaseAction cannot be resolved to a type."
2."SUCCESS cannot be resolved."
3."getRequest() is undefined."
到底是怎么回事啊,是我缺少什么库吗?


[解决办法]

探讨
对,是没有这个类的问题,但是这个类应该怎么定义呢,很迷茫

[解决办法]
public class TransferSelect extends ActionSupport

读书人网 >J2EE开发

热点推荐