4

我是 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如果和的验证成功,则调用 JSP password。但我发现在 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()); 

我认为RegistrationForm在 JSP 中的引用,例如:

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

会工作。

谁能建议我错在哪里?

感谢受访者。该页面现在可以使用。

4

3 回答 3

2

JSP 标记和 JSP EL 访问 bean属性,而不是 bean字段。所以如果你通过_userId了,它会寻找一个叫做 getter 的方法get_userId()。由于要访问 getter getUserId(),因此需要userId在标签内使用。

于 2012-11-25T16:22:02.347 回答
0

尝试

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

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

于 2012-11-25T16:22:17.630 回答
0

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

request.setAttribute("RegistrationForm",formBean);

2)从您的 _userId 变量中删除 _

于 2012-11-25T16:24:41.753 回答