从JSP访问Struts ActionForm中的值

时间:2012-11-25 16:12:43

标签: java struts struts-action

我是一名Struts 1.3.10新手,我有一个问题,我的Action名为RegistrationAction,如下所示:

    public final class RegistrationAction extends Action{

        @Override
        public ActionForward execute(ActionMapping mapping,
                                     ActionForm form,
                                     HttpServletRequest request,
                                     HttpServletResponse response)
        throws Exception{

           RegistrationForm formBean = (RegistrationForm) form;
           String userid = formBean.getUserid();
           String pwd = formBean.getPassword();

然后,用户ID和密码将保存到HashMap<String, String>,其属性为_useridpwd

如果RegistrationActionuserid的验证成功,则

password会调用JSP。但我发现在JSP中,不使用以下代码显示用户标识:

    <h1>Hello  <bean:write name="RegistrationForm" property="_userid" />!</h1>

匹配的ActionForm RegistrationForm包含_userid字段,如下所示:

    public final class RegistrationForm extends ActionForm{

        private String _userid = null;

        public String getUserid(){ return _userid; }
        public void   setUserid(String userid){ _userid = userid; }

        ...

我知道正在填充RegistrationForm的实例,因为我可以通过以下方式检索输入的_userid

    if(err == RegistrationModel.OK){
            System.out.println("Here " + model.getUserid()); 

我认为JSP中的RegistrationForm引用如:

<h1>Hello <bean:write name="RegistrationForm" property="_userid" />!</h1>

会工作吗?

有人能说出我错的地方吗?

感谢受访者。该页面现在有效。

3 个答案:

答案 0 :(得分:2)

JSP标记和JSP EL,访问bean 属性,而不是bean 字段。因此,如果您传递_userId,它将查找名为get_userId()的getter方法。由于您要访问getter getUserId(),因此您需要在代码中使用userId

答案 1 :(得分:0)

尝试

<h1>Hello  <bean:write name="RegistrationForm" property="userid" />!</h1>

你的formbean的内部名称/编码是什么并不重要。重要的是吸气剂和二传手的命名方式。您的getter名为getUserid(),javabean属性为userid

答案 2 :(得分:0)

1)添加您的RegistrationForm以请求

request.setAttribute("RegistrationForm",formBean);

2)从_userId变量

中删除_