1

ModelDriven返回具有空值NULL的。params

豆:

public class MyBean
{
    private String userName;
    public void setUserName(String userName)
    {
        this.userName = userName;
    }
    public String getUserName()
    {
        return userName;
    }
}

班级:

public class MyAction extends ActionSupport implements ModelDriven<MyBean>
{
    MyBean myBean = new MyBean();
    public String execute()
    {
        System.out.println(myBean.getUserName());//getting null here
        return "SUCCESS";
    }
}

要求:

/home/MyAction.do?userName=&pass=

听说我正在为userNameparam 传递空值,但实际上我得到了null值。

如何获得确切的价值ModelDriven

4

3 回答 3

0

我认为你得到空值是因为

您正在实现ModelDriven<MyBean>接口。

并且这个接口必须覆盖getModel()方法,检查 getModel() 方法返回的是什么。它是返回 null 还是你的 bean(myBean)variable ..

public MyBean getModel() {
return null; // This must be the reason, you will get null always when you call getProperties of bean
}

像这样试试

public MyBean getModel() {
    return myBean ; // This will return your bean in modelDriven Interface(return your bean variable here )
    }

希望能帮助到你。

于 2013-08-12T06:53:16.007 回答
0

当您的 bean 属性包含一个null值时,它会将该值保留在 OGNL 表达式和value标记中。您始终可以使用 OGNL 表达式来评估null值。例如

<s:if test="userName == null">
  <s:property value="username"/>
</s:if>

如果要将null值作为参数传递,则应使用null字符串。

/home/MyAction.do?userName="null"&pass="null"
于 2013-08-08T16:21:31.980 回答
0

虽然,HttpServletRequest#getParameter()处理这两种情况的方式不同;对于大多数实际目的,它应该无关紧要。这是因为使用${EL}表达式或Struts显示标签,这些null值将仅呈现为空白。

但是,如果您有一些依赖于它?chrome的代码(例如告诉浏览器类型),您最好将其更改(更改为类似 的代码?browser=ff),因为让您的操作 ServletRequestAware不值得。

如果你仍然想去,这里是如何做到的:

public class MyAction extends ActionSupport implements ModelDriven<MyBean>,
                                                       ServletRequestAware
{
    HttpServletRequest request;
    MyBean myBean = new MyBean();

    public String execute()
    {
        if (myBean.getUserName() == null) {
            myBean.setUserName(getRequest().getParameter("userName"));
        }

        System.out.println(myBean.getUserName());
        return "SUCCESS";
    }

    public void setServletRequest(HttpServletRequest request)
    {
        this.request = request;
    }
}
于 2013-08-08T16:36:56.483 回答