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
param传递空值,但在行动中我得到null
值。
如何在ModelDriven
中获得准确的值?
答案 0 :(得分: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"
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
我认为你的空值是
您正在实施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 )
}
希望它有所帮助。