Использование статических строк для определения имен входных полей в JSP - хорошая идея или нет? - PullRequest
2 голосов
/ 17 мая 2010

Меня только что попросили поработать над большим проектом портала, и я просматривал установленный код. Я продолжаю находить это в JSPS:

<input class="portlet-form-button"
    name="<%=ModifyUserProfile.FORM_FIRST_TIME_LOGIN_SUBMIT%>" type="submit" ...

Авторы используют статические строки, определенные в классах, для определения имен полей ввода и кнопок в формах jsp.

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

Есть мысли по этому поводу?

Ответы [ 2 ]

1 голос
/ 17 мая 2010

Как вы определили, преимущество этого подхода состоит в том, что компилятор гарантирует, что идентификатор, используемый на странице, всегда совпадает с идентификатором в вашем коде Java (например, метод портлета processAction, который читает переданное поле). Изменение значения константы String автоматически обновляет представление. Это также может помочь определить использование строковых констант.

Недостатком является то, что это делает код довольно уродливым, и я бы по возможности избегал кода в стиле скриптлета.

То, изменил бы я это, вероятно, будет зависеть от чистоты кода. Если идентификаторы String смешиваются с беспорядком других констант, а представления представляют собой тысячи джунглей скриптов, я бы, вероятно, оставил их в покое.

Так как это портлеты, если бы я чувствовал себя абсолютно неуверенно в отношении чистоты кода, я бы назвал это входное имя с помощью функции EL.

0 голосов
/ 17 мая 2010

Практика верна. Как вы сказали, это помогает в централизации сообщений.

Другое более полезное преимущество - интернационализация. У вас есть несколько файлов свойств, каждый специфический для локали / языка. Используйте тот, который определен для локали пользователя, и вы получите интернационализированные сообщения без изменения вашего jsp.

...