当 devMode 为真时,提交表单后服务器控制台出现 ParametersInterceptor 错误

ParametersInterceptor Error in server console after submitting the form, when devMode is true

当我在 Struts 2 中提交表单时,当 devMode 设置为 true 时,我在服务器控制台中得到以下 ERROR。虽然这不会影响我的功能,但不确定为什么会这样。

//错误信息

14:34:54,748 ERROR [com.opensymphony.xwork2.interceptor.ParametersInterceptor] (http-localhost/127.0.0.1:8080-1) ParametersInterceptor - [setParameters]: Unexpected Exception caught setting 'x' on 'class com.abc.LoginAction: Error setting expression 'x' with value '[Ljava.lang.String;@154cfc5'
14:34:54,749 ERROR [com.opensymphony.xwork2.interceptor.ParametersInterceptor] (http-localhost/127.0.0.1:8080-1) ParametersInterceptor - [setParameters]: Unexpected Exception caught setting 'y' on 'class com.abc.LoginAction: Error setting expression 'y' with value '[Ljava.lang.String;@114b526'

下面是代码片段

// Login JSP
<s:form action="login">
<table>
    <tr><td>UserName : </td><td><s:textfield name="userid"/></td>
    <tr><td>Password : </td><td><s:password name="password"/></td>
    <tr><td></td><td><s:submit value="Submit" /></td>
</table>
</s:form>

Action class 处理表单提交

public class LoginAction implements ModelDriven<LoginForm> {
    private LoginForm theForm = new LoginForm();
    public LoginForm getModel() {
        return theForm;
    }
    public String execute() throws Exception {
        -----
        -----
    }
}

// POJO used for data binding.
public class LoginForm {
    private String userid;
    private String password;
    // Setters and Getters
    
}

您的请求有额外的参数,因为您在操作 class 中没有 public 个访问器。但是,如果您不需要 Struts 拦截器处理这些冗余参数,那么您可以配置此拦截器以排除这些参数。

在示例 Struts 2 ModelDriven Action how to exclude some properties from being updated 中,您可以找到使用 xml 配置执行此操作的代码。其他示例可能会使用我的答案中提供的注释配置。

这些额外参数的来源很难说,可能你有一些类型为 image 的输入字段。