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=
在这里,我为
userName
参数传递空值,但在实际操作中我得到了 null
值。
如何获取
ModelDriven
中的精确值?
当您的 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"
尽管,
HttpServletRequest#getParameter()
以不同的方式处理这两种情况;对于大多数实际目的来说,这应该没有多大关系。这是因为使用 ${EL} 表达式或 Struts 显示标签,null
值将仅呈现为空白。
但是,如果您有一些依赖于它的代码(例如
?chrome
告诉浏览器类型),您最好更改它(更改为 ?browser=ff
之类的内容),因为使您的 Actions 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;
}
}
我认为你得到空值是因为
您正在实现
ModelDriven<MyBean>
接口。
并且这个接口必须重写
getModel()
方法,检查 getModel() 方法返回什么。它是否返回 null 或者你的 bean(myBean) 变量..
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 )
}
希望有帮助。