从 JSP 访问 Struts ActionForm 中的值



我是 Struts 1.3.10 新手,我有一个问题,我有一个叫做 RegistrationActionAction,如下所示:

    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();

然后将用户标识和密码保存到具有属性 _useridpwdHashMap<String, String>中。

然后,如果useridpassword的验证成功,RegistrationAction调用 JSP。但是我发现在JSP中,没有使用以下代码显示用户ID:

    <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>

会工作。

谁能指出我错在哪里?

感谢受访者。该页面现在可以工作了。

JSP 标记和 JSP EL 访问 Bean 属性,而不是 Bean 字段。所以如果你通过_userId,它将寻找一个名为get_userId()的getter方法。由于您要访问 getter getUserId() ,您需要在标签中使用userId

尝试

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

表单Bean的内部名称/编码是什么并不重要。重要的是getter和setter如何命名。你的 getter 被命名为 getUserid() javabean 属性是 userid .

1) 添加您的注册表以请求

request.setAttribute("RegistrationForm",formBean);

2) 从_userId变量中删除 _

最新更新