從JSP

2012-11-25 14 views
4

在Struts中的ActionForm訪問一個值我一個Struts 1.3.10新手,我有一個問題,我有一個名爲RegistrationAction作爲Action如下:從JSP

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

的用戶名和密碼,然後保存到HashMap<String, String>,屬性爲_useridpwd

RegistrationAction然後在useridpassword的驗證成功時調用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()); 

我認爲如在RegistrationForm參考在JSP:

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

會工作。

任何人都可以提出我錯在哪裏?

感謝受訪者。該頁面現在可以運行。

+1

'_userid'是可怕的一個屬性的可惡名稱不確認的Java的命名約定。你不應該再使用它了。 – Lion

+0

同意。 '_userid'僅僅是Struts示例中使用的一個名稱,我之前從未運行正常,直到此問題已發佈,而另一個則是昨天。現在我已經有了這個例子,我將把這個名字改爲'userName'或者其他的。 –

回答

2

JSP標籤和JSP EL訪問bean 屬性,而不是bean 。所以如果你通過_userId,它會尋找一個叫做get_userId()的getter方法。既然你想訪問getter getUserId(),你需要在標籤內使用userId

0

嘗試

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

這不要緊,你的FormBean的內部名稱/編碼是什麼。所有重要的是獲得者和制定者如何命名。你的getter被命名爲getUserid(),對於javabean屬性是userid

0

1)添加您RegistrationForm要求

request.setAttribute("RegistrationForm",formBean); 

2)刪除_你_userId變量