2011-07-11 55 views

回答

1

我想有優雅的和醜陋的方式來解決這個問題,我會與標準if標籤,除非你有特殊需要,像這樣的開始?你有一個bean有幾個檢查方法來返回布爾檢查結果。然後使用<c:choose><c:when><c:otherwise>模擬如果 - 那麼,其他

<c:choose> 
     <c:when test="${!bean.isAuthorized}"> 
     <input type="text" name="name" readonly="readonly"> 
     </c:when> 
    <c:when test="${bean.isCondition2}"> 
      ........... 
     </c:when> 
     <c:when test="${bean.isCondition3}"> 
      ........... 
     </c:when> 
     <c:otherwise> 
     ............... 
     </c:otherwise> 
    </c:choose> 
+0

嗨kennet,這種方法可能會帶來太多的代碼,因爲我有多個If-else語句(或者讓我們說一個Switch case),如果這是真的,只讀,如果這是真的,使它消失,如果另一件事是真的,做別的事情。 – t0mcat

+0

呃,在自定義標籤裏面做?順便說一句,這個條件必須放在'test'屬性中。 – BalusC

+0

嗨Balus,我認爲這可以做,但如果其他類型的代碼很多。我正在尋找開發類似於Spring Security的定製標籤「isAuthorized」和全部的定製標籤。 – t0mcat

0

如何:

0

我不知道,如果自定義標籤會去這裏的路..

我明白,你不如果你有20個輸入字段,只要滿足一個條件(例如,當用戶只有只讀私有屬性)時,都需要進行只讀操作。您並不是真的希望運行該單一檢查20次的處理開銷。

你有沒有考慮過創建一個單獨的只讀視圖的表單?並且圍繞一組包含你的if條件包裝?好的 - 你有代碼複製(有辦法最小化),但是這意味着你只有1個支票而不是20個?保持只讀視圖獨立的另一個好處是,數據不一定要在表單元素中顯示,並且你可以自由設計你想要的樣式。

+0

嗨raq,這也是不錯的主意。我將發佈我想要提出的內容..也許你們可以建議或糾正我的方法? – t0mcat