2011-07-11 57 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