我的struts.xml文件:
<struts> 
   <package name="struts2" extends="struts-default" >
     <action name="userAction"  class="action.UserAction">  
     <result name="success">/loginSuccess.jsp</result>
       
     </action>  
   </package>
</struts>
我的UserAction文件:package action;
import com.opensymphony.xwork2.ActionSupport;
import entity.User;
public class UserAction extends ActionSupport{
/**
 * 
 */
private static final long serialVersionUID = 1L;
private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} @Override
public String execute() throws Exception{
System.out.println("userName:"+user.getUserName());
System.out.println("userPassword:"+user.getUserPassword());
    return SUCCESS;
}
}login.jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%@ taglib prefix="s" uri ="/struts-tags" %>
<html>
<head><title>类型转换器</title></head>
<body>
<h1>使用逗号隔开用户名和密码信息</h1>
<form action="userAction"  method="post" >
   userinfo:<input type="text" name="user"><br>
   <input type="submit" value="submit">
</form>
</body>
</html>loginSuccess.jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%@ taglib prefix="s" uri ="/struts-tags" %>
<html><body>
<s:property value="user" />
</body>
</html>
其他的文件要看么?我放下面吧

解决方案 »

  1.   

    转换文件UserConverter:
    package util;
    import java.util.Map;
    import java.util.StringTokenizer;
    import entity.User;
    import ognl.DefaultTypeConverter;
    public class UserConverter extends DefaultTypeConverter {
    public Object convertValue(Map  context,Object value,Class toType){

    if(toType == User.class)

    String[] str=(String[])value;
        String firstValue=str[0];
        StringTokenizer st=new StringTokenizer(firstValue,";");
        String userName=st.nextToken();
        String userPassword=st.nextToken();
        User user=new User();
        user.setUserName(userName);
        user.setUserPassword(userPassword);
        return user;
        }else if(toType==String.class){
         User user=(User)value;
         String userName=user.getUserName();
         String userPassword=user.getUserPassword();
         String userInfo="userName:"+userName+",userPassword:"+userPassword;
         return userInfo;
        }
        return null;
       }
    }
    UserAction-converter.properties文件:user=util.UserConverter后面这两个就不用看了吧。。
    User.java:public class User {
    private String userName;
    private String userPassword;
    public String getUserName() {
    return userName;
    }
    public void setUserName(String userName) {
    this.userName = userName;
    }
    public String getUserPassword() {
    return userPassword;
    }
    public void setUserPassword(String userPassword) {
    this.userPassword = userPassword;
    }

    }
    web.xml配置:
     <filter>
            
    <filter-name>struts2</filter-name>
         
       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        
    </filter>
        
    <filter-mapping>
            
    <filter-name>struts2</filter-name>
            
    <url-pattern>/*</url-pattern>
        
    </filter-mapping>
    该有的jar包也都引进去了啊,为什么会发出错误呢?错误信息具体如下:HTTP Status 404 - No result defined for action action.UserAction and result input--------------------------------------------------------------------------------type Status reportmessage No result defined for action action.UserAction and result inputdescription The requested resource (No result defined for action action.UserAction and result input) is not available.
    --------------------------------------------------------------------------------Apache Tomcat/7.0.29
      

  2.   

    userinfo:<input type="text" name="user.userName"><br>
    你user是个对象
      

  3.   

    我按楼上的修改,倒是没有错误提示了,可是也不是我想要的结果,运行结果是:
    entity.User@2d17c254 我还要怎么改呢?
      

  4.   

    我按楼上的修改,倒是没有错误提示了,可是也不是我想要的结果,运行结果是:
    entity.User@2d17c254 我还要怎么改呢?
      

  5.   

    UserAction类里定义userName,并提供get,set方法
      

  6.   

    input里的name属性是参数,按你想的你想用参数获取方法,怎么可能啊
      

  7.   

    换这种试试: 
    public class MyConverter extends StrutsTypeConverter {
        public Object convertFromString(Map context, String[] values, Class toClass) {
           .....
        }    public String convertToString(Map context, Object o) {
           .....
        }
     }
      

  8.   

    userinfo:<input type="text" name="user"><br>  这个地方 应为你的user是对象 所以要对象.属性user.userName  或者你这样 
    private String name;public void setName(String name){
         user.setUserName(name);
    }
    public String getName(){
         return user.getUserName();
    }
    这样写了以后 你jsp里写input name=name  传入的是String参数  到了action 会调用 get方法  记住struts是通过你name的名字直接找到set方法的而不是通过属性名,这样调用了set之后 会set到user对象里
      

  9.   


    想取user对象中的userName???这种写法行不通.直接在action里写set/get吧.