как обеспечить строковые константы для выпадающих списков в JSP - PullRequest
1 голос
/ 12 июля 2011

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

спасибо

знак

<tr>
<td>
    <select id="creditCardType" title="select card type" name="creditCardType">
        <option value="M0">MasterCard</option>
        <option value="D0">Discover</option>
        <option value="J0">JCB</option>
        <option value="I0">Diners Club</option>
        <option value="A0">American Express</option>
        <option value="V0">Visa</option>
        <option value="V">Amazon.com Visa</option>
        <option value="G21">Amazon.com Store Card</option>
    </select>
</td>
</tr>
<tr>
<td>Expiration Date</td>
<td> 
                     <select id="cardexpiryMonth" name="cardexpiryMonth">
                        <option value="01" selected="selected">01</option>
                        <option value="02" >02</option>
                        <option value="03" >03</option>
                        <option value="04" >04</option>
                        <option value="05" >05</option>
                        <option value="06" >06</option>
                        <option value="07" >07</option>
                        <option value="08" >08</option>
                        <option value="09" >09</option>
                        <option value="10" >10</option>
                        <option value="11" >11</option>
                        <option value="12" >12</option>
                      </select>
</td>
<td>
                    <select id="cardexpiryYear" name="cardexpiryYear">
                        <option value="2011" >2011</option>
                        <option value="2012" selected="selected">2012</option>
                        <option value="2013" >2013</option>
                        <option value="2014" >2014</option>
                        <option value="2015" >2015</option>
                        <option value="2016" >2016</option>
                        <option value="2017" >2017</option>
                        <option value="2018" >2018</option>
                        <option value="2019" >2019</option>
                        <option value="2020" >2020</option>
                        <option value="2021" >2021</option>
                        <option value="2022" >2022</option>
                        <option value="2023" >2023</option>
                        <option value="2024" >2024</option>
                        <option value="2025" >2025</option>
                        <option value="2026" >2026</option>

                        <option value="2027" >2027</option>
                        <option value="2028" >2028</option>
                        <option value="2029" >2029</option>
                        <option value="2030" >2030</option>
                        <option value="2031" >2031</option>
                      </select>
</td>
</tr>

Ответы [ 2 ]

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

Если это константы всего приложения, просто поместите их в область приложения во время запуска приложения. Для этого вы можете использовать метод init() произвольного сервлета или, что лучше, ServletContextListener.

@WebListener
public class Config implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) { 
        Map<String, String> creditCardTypes = new LinkedHashMap<String, String>();
        creditCardTypes.put("M0", "MasterCard");
        creditCardTypes.put("D0", "Discover");
        // ...

        event.getServletContext().setAttribute("creditCardTypes", creditCardTypes);
    }

    // ...
}

(обратите внимание, что я использовал LinkedHashMap, поскольку он поддерживает порядок вставки в отличие от HashMap)

Таким образом, он доступен как ${creditCardTypes} EL в любой JSP. Затем вы можете использовать JSTL <c:forEach> для его итерации. Он также поддерживает итерации по Map, и каждая итерация будет возвращать Map.Entry, что в свою очередь имеет методы getKey() и getValue(), которые также доступны в EL.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<select id="creditCardType" title="select card type" name="creditCardType">
    <c:forEach items="${creditCardTypes}" var="creditCardType">
        <option value="${creditCardType.key}">${creditCardType.value}</option>
    </c:forEach>
</select>
0 голосов
/ 13 июля 2011

Если вы используете Spring (2.5 / 3.0), взгляните на @ ModelAttribute

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...