【问题标题】:How to get URL parameter in prepare method of action class in Struts 2 [duplicate]如何在Struts 2中的action类的prepare方法中获取URL参数[重复]
【发布时间】:2021-07-01 04:01:34
【问题描述】:

我在Preparable接口的prepare方法中得到null作为URL参数名称,而参数是在URL中设置的。

我正在尝试访问的 URL,

http://localhost:8080/basic-struts/registerInput.action?userid=1


public class Register extends ActionSupport implements Preparable {    

    private String userid;       

    public void prepare() throws Exception {
        // Call the service, load data, 
        // every time even if validation fails

        System.out.println("----------");
        System.out.println(userid); //<-------null
        System.out.println("----------");
    }

    public String getUserId() {
        return userid;
    }

    public void setUserId(String userid) {
        this.userid = userid;
    }

}

注意:- 我在日志中得到一些错误,如下所示,

2021-07-01 09:28:53,929 错误 [qtp1182469998-22] interceptor.ParametersInterceptor (ParametersInterceptor.java:238) - 开发人员通知(将 struts.devMode 设置为 false 以禁用此消息): 在“class org.apache.struts.register.action.Register”上设置“userid”时出现意外异常:错误设置表达式“userid”的值为 ['1', ]

【问题讨论】:

标签: java parameters struts2 ognl


【解决方案1】:

将参数userid 设置为操作类变量区分大小写。对应的setter方法应该是

public void setUserid(String userid) {
    this.userid = userid;
}

【讨论】:

  • 删除了错误消息,但我的用户 ID 仍然为空。我认为prepare方法在struts2中不接受url参数,而且url参数只适用于execute方法。
  • @Shoyeb prepare() 方法实现了Preparable 接口。而且您必须编写自己的实现。 request 对象中的 URL 参数可能尚未由 params 拦截器填充您的操作。但是由于default-stack 中的documentation,它在prepare 拦截器之前执行。
  • 我在我的操作中添加了一个拦截器paramsPrepareParamsStack,它现在正在工作,我得到了变量userid中的值。感谢您对 setter 方法的帮助。
【解决方案2】:

@Dave Newton 的建议有所帮助,在他分享的链接上,我得到了线索并让它发挥了作用,

我更改了我的 struts.xml 并将拦截器 paramsPrepareParamsStack 添加到我的操作中,如下所示,

<action name="registerInput" class="org.apache.struts.register.action.Register" method="input" >
    <result name="input">/register.jsp</result>
    <interceptor-ref name="paramsPrepareParamsStack"/>
</action>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2016-08-29
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    相关资源
    最近更新 更多