Java 将变量值传递给Action类方法时,该变量值为null

Java 将变量值传递给Action类方法时,该变量值为null,java,jsp,struts2,ognl,struts-tags,Java,Jsp,Struts2,Ognl,Struts Tags,在我的jsp文件中,我设置了变量statusNum的值。当我试图将statusNum的值传递给方法getStatusString()(此方法在Action类中定义)时,statusNum的值为空。但是当我使用${statusNum}显示时,我得到了值。这是我的密码 ${statusNum} 下面是Action类中getStatusString()方法的框架 公共字符串getStatusString(整数sendStatus){ ------------- -------------//返回

在我的jsp文件中,我设置了变量statusNum的值。当我试图将
statusNum
的值传递给方法
getStatusString()
(此方法在Action类中定义)时,
statusNum
的值为空。但是当我使用
${statusNum}
显示时,我得到了值。这是我的密码


${statusNum}
下面是Action类中getStatusString()方法的框架

公共字符串getStatusString(整数sendStatus){
------------- 
-------------//返回字符串值的代码
-------------         
}

请帮助我通过方法
getStatusString()

获取与
statusNum
对应的状态字符串值。您应该尝试使用
标记来调用操作方法

安维。。。在我看来,这不是一个好的选择。。。为什么要在jsp中调用操作方法,并将业务层与表示层混合使用

在控制器中移动所有内容并使用jsp仅呈现结果更容易

我是说。。。您正在将单个操作分为两个不同的阶段。您的操作是创建一个名为
emailList
集合
,然后在jsp中迭代集合。在迭代过程中,调用一个方法以获取状态字符串


工作流:操作->jsp->迭代->{method x n}->结果


为什么不在操作中准备状态字符串?这样,您只需打印值,您的堆栈就不会充满“垃圾”(如果我们可以这么说的话)


工作流:操作->jsp->迭代->结果




如果字符串可能会随着时间的推移而改变,那么使用Ajax。为了使您的页面始终保持刷新,并以更安全的方式。我不知道为什么它不起作用,但既然它是一个数字,您应该这样做


而不是


也就是说,将其用作HTML,从而用作字符串

IlGala是对的,您应该在控制器上或在
emailList
bean上执行此操作,但您也可以使用另一个技巧,如中所述:

迭代emailList对象并在不传递任何参数的情况下调用操作方法:


然后在action方法中,从值堆栈中检索当前迭代的对象,并从中获取所需的参数:

公共字符串getStatusStringByStatusNum(){
EmailBizObj currentlyIteratedObj=
(EmailBizObj)ActionContext.getContext().getValueStack().peek();
整数sendStatus=currentlyIteratedObj.getStatus();
return…;//在此处对sendStatus和电子邮件对象执行所需操作。
}

jsp中的
statusNum
可能是一个字符串。emailList的类型为List emailList。然后调用EmailBizObj的方法。那么,我应该在EmalBizObj类中准备statusString方法,以便获取statusNum为该statusNum准备statusString吗