大侠们求助啊,谢谢啊,我的Struts2类型转换问题No result defined for action ** and result input

xuegang1987621 2012-08-31 03:19:10
我的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>


其他的文件要看么?我放下面吧
...全文
302 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkman_22 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
userinfo:<input type="text" name="user.userName"><br>
你user是个对象
[/Quote]

想取user对象中的userName???这种写法行不通.

直接在action里写set/get吧.
a512796048 2012-09-05
  • 打赏
  • 举报
回复
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对象里
EngineZhang 2012-08-31
  • 打赏
  • 举报
回复
换这种试试:
public class MyConverter extends StrutsTypeConverter {
public Object convertFromString(Map context, String[] values, Class toClass) {
.....
}

public String convertToString(Map context, Object o) {
.....
}
}

  • 打赏
  • 举报
回复
input里的name属性是参数,按你想的你想用参数获取方法,怎么可能啊
xuegang1987621 2012-08-31
  • 打赏
  • 举报
回复
我这里可是要用到类型转换方法的,你那么一修改,貌似就不通过类型转换了啊
  • 打赏
  • 举报
回复
UserAction类里定义userName,并提供get,set方法
xuegang1987621 2012-08-31
  • 打赏
  • 举报
回复
我按楼上的修改,倒是没有错误提示了,可是也不是我想要的结果,运行结果是:
entity.User@2d17c254

我还要怎么改呢?
xuegang1987621 2012-08-31
  • 打赏
  • 举报
回复
我按楼上的修改,倒是没有错误提示了,可是也不是我想要的结果,运行结果是:
entity.User@2d17c254

我还要怎么改呢?
  • 打赏
  • 举报
回复
userinfo:<input type="text" name="user.userName"><br>
你user是个对象
xuegang1987621 2012-08-31
  • 打赏
  • 举报
回复
转换文件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 report

message No result defined for action action.UserAction and result input

description The requested resource (No result defined for action action.UserAction and result input) is not available.


--------------------------------------------------------------------------------

Apache Tomcat/7.0.29

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧