Как создать пользовательский тег JSP, помечающий поле только для чтения? - PullRequest
0 голосов
/ 11 июля 2011

Я хочу создать пользовательский тег, который будет помечать поле только для чтения в JSP.Любые предложения, как это сделать?

Ответы [ 3 ]

1 голос
/ 11 июля 2011

Я думаю, что есть элегантные и уродливые способы решить эту проблему, я бы начал со стандартного тега if, если у вас нет особых потребностей, например:

<input type="text" name="name" <c:if test="condition">readonly</c:if>>

0 голосов
/ 13 июля 2011

Я не уверен, что здесь можно использовать пользовательский тег ..

Я понимаю, что вы не хотите наполнять свой код множеством операторов if else, окружающих ваши атрибуты только для чтения. Если у вас есть, скажем, 20 полей ввода, все из которых должны быть сделаны только для чтения, в зависимости от того, когда выполняется одно условие (например, когда пользователь имеет привилегии только для чтения) .. вам не нужны накладные расходы на выполнение этой одиночной проверки 20 раз ..

Рассматривали ли вы создание отдельного представления только для чтения вашей формы? а и обернуть ли ты еще условие вокруг набора включений? хорошо - у вас есть репликация кода (что есть способы свести к минимуму), но это означает, что у вас есть только 1 проверка вместо 20? Еще одно преимущество сохранения режима «только для чтения» состоит в том, что данные не обязательно должны отображаться внутри элементов формы, и вы можете свободно стилизовать их так, как хотите.

0 голосов
/ 12 июля 2011

Как насчет этого? У вас есть бин, у которого есть несколько методов проверки, чтобы вернуть логический результат проверки. Затем используйте <c:choose>, <c:when> и <c:otherwise> для имитации if -then-else

<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>
...