struts2表单提交不命中方法

时间:2016-06-09 15:35:08

标签: java jsp struts2

我有一个像这样的.jsp表单

<s:form action="AuditLogReport">Source IP<br>
<input type="text" class="auditLogSearch" name="sourceIp" value="All">
<input type="submit" value="Submit"/>
</s:form>

我的struts.xml已定义

    <action name="AuditLogReport" 
    class="com.mycom.selfservice.actions.AuditLogAction" method="auditLogReport">  
                <result name="success">jsp/AuditLog.jsp</result> 
                <result name="error">jsp/Error.jsp</result>  
    </action>

这是我的班级定义

public class AuditLogAction extends ActionSupport implements Action,ServletRequestAware {

在我的AuditLogAction类中有一个方法

public String auditLogReport() {
    System.out.println("Im in auditLogReport...");

但是当我点击按钮时,auditLogReport方法不会被点击。我在浏览器网址中看到的是http://localhost:7001/BPSelfServicePortal/AuditLogReport.action

它正在附加.action,我认为这是为什么它找不到方法。所以我试着把

 <constant name="struts.action.extension" value=""/> 
struts.xml中的

。这阻止了.action的附加,但按钮仍无效。此外,它导致.css和图像被发现。我有一个使用默认execute()方法的链接,并且工作正常。

如果我只是删除url中的.action并按Enter键,它会触及方法,但表单中没有任何值传递。

建议?

1 个答案:

答案 0 :(得分:0)

问题原来是Date参数。显然struts2不喜欢它们。

public Date getFromDate() {
    return fromDate;
}
public void setFromDate(Date fromDate) {
    this.fromDate = fromDate;
}

将其更改为

public String getFromDate() {
    return fromDate;
}
public void setFromDate(String fromDate) {
    this.fromDate = fromDate;
}

然后它奏效了!