我是strut2初学者,我正在测试我的第一个hello world示例。这是我的动作类:
package com.tutorialspoint.struts2;
public class HelloWorldAction {
private String myname = "";
public String execute() throws Exception {
System.out.println("Execute successfully");
return "success";
}
public String getMyname() {
return this.myname;
}
public void setMyname(String name) {
System.out.println("myName is set");
this.myname = name;
}
}
这是第一页:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action="hello">
<label for="myName">Please enter your name</label><br/>
<input type="text" name="myname" value="No name"/>
<input type="submit"/>
</form>
</body>
</html>
第二页:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
Hello World, <s:property value="myname"/>
</body>
</html>
最后是配置文件:
<?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>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default">
<action name="hello"
class="com.tutorialspoint.struts2.HelloWorldAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
</struts>
问题是,当我按下输入名称的按钮时,会显示错误:
com.opensymphony.xwork2.interceptor.ParametersInterceptor error
Unexpected Exception caught setting 'myname' on 'class com.tutorialspoint.struts2.HelloWorldAction: Error setting expression 'myname' with value ['No name', ]
如果我在动作类中将属性'myname'更改为'name'以及相应的jsp文件,它运行良好且没有错误。 请提出修复建议。
答案 0 :(得分:1)
只需检查您的jar文件。 我只是复制粘贴你的代码在我的项目中,它运行正常没有任何错误
答案 1 :(得分:1)
请遵循POJO类中变量中camelCase的命名约定。我发现Struts2非常敏感。
我面临一个问题:如果你命名一个变量eMail,那么struts将无法用于此。如果将其重命名为elecMail,那么它将起作用。
参见模式:eMail将setter和getter方法设置为setEMail()和getEMail(),即两个连续的大写字母。 Struts在查找setter方法名称时可能会有一些缺陷。
可能是你面临的类似事情。
答案 2 :(得分:0)
最后,我找到了问题的原因。更改属性名称,方法名称和jsp文件后,我们必须重新启动服务器。仅刷新浏览器会导致问题。是否扩展ActionSuppport并不会影响问题。