struts2 value屬性預設值解決方案

2021-05-22 10:21:47 字數 1397 閱讀 4235

需求是這樣:當使用者登陸後,我們提供他乙個可以修改個人資訊的功能。在文字框裡,需要顯示使用者的原始資訊。

使用者登陸後把他的全部資訊放在session裡,這種做法很正常,有一點開發經驗的程式設計師都會這樣去做。

我一開始的做法是這樣:把這個session傳到jsp頁面上,然後使用的value屬性去顯示,結果發現 value不支援任何表示式,這讓我有點沮喪。

我在csdn 上發帖問過這個問題,但沒有乙個讓人滿意的答案。每個人的回帖都是寫在value裡怎樣寫表示式!

後來經過思索,我完全推翻了上面這種愚蠢的作法。

我們為什麼會用struts2的標籤,不用html的標籤,原因很簡單,就是他在提交失敗後會留住頁面狀態。

反之,如果的value屬性支援表示式,那麼提交失敗後,它還會去讀表示式裡的值,也就是說它會還原成預設值,而 不是使用者修改後的值,這是我們都不想要的結果,我們要的是它既能顯示預設值又能留住頁面狀態(修改過後的值)。

所以,我們可以這樣去做:

我們去寫乙個getuserinfo.action,在這個action裡,我們去定義乙個屬性:users user給它get,set方法,然後我們給他賦上session裡的值,成功後頁面跳轉到jsp頁面裡,在jsp裡面,我們這樣去 寫:這裡不需要value屬性。

只要user裡面有值,頁面上就會顯示我們想要的值,而使用者修改後提交失敗後也能留住修改過後的值,這才是我們想要的效果。

當然,那個getuserinfo.action就是修改個人資訊的超連結,而不是之前的jsp頁面。

action原始碼:

1class

getinfoaction 

extends

actionsupport 

catch

(exception e)

1820

public

users getuser() 

2324

public

void

setuser(users user) 

2728

說明:如果你希望請求乙個頁面user.jsp。希望在頁面初始化的時候在textfiled中顯示預設值。可以按照下面的步驟。

定義乙個action,如上面的getinfoaction。在action中為想要設定預設值的textfiled設定 getter和setter。

在action中設定該action執行成功的時候返回user.jsp頁面。當然需要修改struts.xml檔案。

最後,在請求user.jsp的地方修改為請求getinfoaction.action。

這就相當於在請求user.jsp之注入了乙個對getinfoaction.action的請求。

struts2 value屬性預設值解決方案

需求是這樣 當使用者登陸後,我們提供他乙個可以修改個人資訊的功能。在文字框裡,需要顯示使用者的原始資訊。使用者登陸後把他的全部資訊放在session裡,這種做法很正常,有一點開發經驗的程式設計師都會這樣去做。我一開始的做法是這樣 把這個session傳到jsp頁面上,然後使用的value屬性去顯示,...

Struts2 屬性驅動

在jsp頁面提交到action中的表單元素在action中是以物件的形式存在的,action中的物件name必須與jsp頁面中的表單元素name相同,struts框架自動為action的物件賦值.注意 action中的物件name必須與jsp頁面中的表單元素name相同,struts框架自動為act...

Struts 2鍵屬性示例

在struts 2中,ui元件中的 key 屬性是處理本地化的常用方法,也是對ui標籤進行編碼的非常有效的方法。參見以下兩種情況 屬性檔案包含一條訊息。global.properties global.username username 如果您將 key 屬性分配給文字字段。key屬性將從資源包中獲...