表格行动违约行为'属性的字面值

时间:2015-11-28 08:40:35

标签: java jsp struts2

当我遇到title的问题时,我正在尝试使用struts2框架制作web项目。我是stackoverflow的新手,所以如果代码难以阅读,请原谅我。 这是我的struct.xml

<struts>
<package name="default" extends="struts-default" namespace="/">
    <action  name="login" class="com.mxl.actions.LoginAction">
        <result name="success">/success.jsp</result>
        <result name="input">/login.jsp</result>
    </action>
</package>

这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
        <init-param>
            <param-name>struts.i18n.encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
</web-app>

的login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<s:form action="login" method="post">
    <s:textfield name="username" label="User Name"
        cssStyle="width:160px;height:26px;" />
    <s:password name="password" label="Pass Word"
        cssStyle="width:160px;height:26px;" />
    <s:submit value="Sign in" />
</s:form>

最后是LoginAction.java

package com.mxl.actions;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
    private String username;
    private String password;
    @Override
    public String execute() throws Exception {
        if(username.equals("1") && password.equals("111")){
            return SUCCESS;
        }else{
            return INPUT;
        }
    }
    public String getName() {
        return username;
    }
    public void setName(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

当我点击&#34;在服务器上运行&#34;该项目看起来很好,当我输入用户名和密码时,它会发现&#34; 404 Not Found&#34;网址转为localhost:8080/Struts_try/login我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

假设您在操作类中有成员变量name

调用操作时,默认配置会映射调用setter的http参数。例如,如果你调用localhost:8080/Struts_try/login?name=myName Struts2将实例化你的动作并调用方法setName("myName")(如果你的属性不是字符串,struts2将尝试转换它)。

执行操作后,当结果显示在视图中(例如,JSP页面)时,您可以编写<s:property value='name' />,Struts2将调用您操作的方法getName()

因此,使用getter和setter设置和获取值非常重要,而不是直接使用成员变量。