在整合ssh的项目中,ss整合跳转action出现了问题,from表单提交action,进入velidate()验证返回一个input,不进入execute(),
一直检查配置文件和项目源码,但始终找不到源头所在,后来经过大神的一番源码解析后,终于找到了问题所在,下面上代码
form表单的代码:
<s:form action="loginUser" method="POST" namespace="/page">
<div class="infos">
<table class="field">
<tr>
<td colspan="2" ><s:fielderror/> ${message}</td>
</tr>
<tr>
<td class="field">用 户 名:</td>
<td><!-- <input type="text" class="text" name="name" /> -->
<s:textfield name="user.name" cssClass="text" required="true"/>
</td>
</tr>
<tr>
<td class="field">密 码:</td>
<td><!-- <input type="password" class="text" name="password" /> -->
<s:password name="user.password" cssClass="text" required="true"/>
</td>
</tr>
</table>
<div class="buttons">
<s:submit value="立即登录" />
<input type='button' value='注册' onclick='document.location="page/register.jsp"'/>
</div>
</div>
</s:form>
struts2 xml:
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"/>
<constant name="struts.ui.theme" value="simple"/>
<constant name="struts.objectFactory.spring.autoWire" value="type"/>
<package name="page" namespace="/page" extends="struts-default" >
<action name="loginUser" class="landun.qiqi.action.LoginAction" >
<!--登录成功后跳转到houseList Action -->
<result name="success">/page/house/house_list.jsp</result>
<result name="login">/page/login_struts2.jsp</result>
<result name="input">fail.jsp</result>
</action>
</package>
<include file="struts-user.xml"/>
</struts>
action:
public void validate(){
System.out.println("validateLogin^");
}
public String execute() {
System.out.println("execute");
}
运行结果:
调试发现的错误:
调试了很久源码查了好多资料都没有发现问题所在,后来大神检查了一波struts.xml,发现是一条代码导致的:
原本是想设置按type来自动注入,没想到最后导致了一个蜜汁bug,这条代码具体是什么原因导致出现问题我还没弄明白;
我个人感觉是因为项目中的action是以set方式注入的bean,而这条代码设置为type,导致某个原因注入不了出现问题,以后深入
了解后再来补充!