Как интернационализировать Java динамические c сообщения в jsp - PullRequest
0 голосов
/ 17 июня 2020

У меня есть форма jsp для входа в систему, и я хочу интернационализировать сообщения об ошибках, которые отображаются в параметрах $ {error} и $ {blocked}, но я не знаю, как лучше всего это сделать. jsp, поскольку у меня есть несколько сообщений для каждого параметра, которые отображаются в соответствии с ответом от формы.

Это мой индекс. jsp страница:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<c:set var="language" value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}" scope="session" />
<fmt:setLocale value="${language}" />
<fmt:setBundle basename="com.app.i18n.text" />

<!DOCTYPE html>
<html lang="${language}">
<head>
<meta charset="UTF-8">
<title>Login Page</title>
<link href="css/main-style.css" rel="stylesheet">
<script src="https://www.google.com/recaptcha/api.js"></script>
</head>
<body>
<div id="wrapper">
 <form>
            <select id="language" name="language" onchange="submit()" style="margin-bottom:10px">
                <option value="en" ${language == 'en' ? 'selected' : ''}>English</option>
                <option value="pt" ${language == 'pt' ? 'selected' : ''}>Português</option>
                <option value="es" ${language == 'es' ? 'selected' : ''}>Español</option>
            </select>
        </form>
    <form name="login-form" class="login-form" action="LoginCheck" method="post">

    <div class="header">
        <h1>Login</h1>
        <span>${error} ${blocked}</span>
        </div>
        <div class="content">

        <label for="username"><fmt:message key="login.label.username" />:</label>
        <input type="text" name="username" class="input username"  style="margin-bottom:10px; margin-top: 10px"/>
        <div class="user-icon"></div>
        <label for="password" ><fmt:message key="login.label.password" />:</label>
        <input type="password" name="password" class="input password"  style="margin-bottom:20px;" />
        <div class="pass-icon"></div><br>
        <div style="transform:scale(0.8);transform-origin:0 0" class="g-recaptcha" 
            data-sitekey="6Lebrv4UAAAAACjv-AXcvu7TW8pjwAsTeDIlJPSK"></div>      
        </div>
        <div class="footer">
         <fmt:message key="login.button.submit" var="buttonValue" />
        <input type="submit" name="submit" value="${buttonValue}" class="button" />

        <br><br><br><br>
        <a href="reset.jsp"><label for="changepwd" ><fmt:message key="login.label.changepwd" />:</label></a></div> 
        </form>
    <div>
            </div>
</div>

</body>
</html>

У меня уже есть файл свойств, например text.properties:

login.label.username = Username
login.label.password = Password
login.label.changepwd = Reset password
login.button.submit = Login
error.page.label1 = Page not found.
error.page.label2 = We are sorry, but the address is not accessible.
error.page.button = Go Back
error.page.title = Error

И это крошечная часть моего сервлета входа, например:

String blocked = Constants.BLOCKED_USER;
                request.setAttribute("blocked", blocked);
                request.getRequestDispatcher("index.jsp").forward(request, response);   
                return;
            } 


            else if (!UserDAO.Validation(username, encryptedpwd) && !BlockUser.SelectState(username))
            {  

                String message;
                try {
                    message = BlockUser.Attempts(username);

                if(message.equals("Updated")){
                    String error = Constants.FAILED_LOGIN;
                    request.setAttribute("error", error);
                    request.getRequestDispatcher("index.jsp").forward(request, response);   

                }else{

                    String state = Constants.INACTIVE_STATE;

                    BlockUser.Block(state, username);

                    String blocked = Constants.MAX_ATTEMPS;
                    request.setAttribute("blocked", blocked);
                    request.getRequestDispatcher("index.jsp").forward(request, response);   

Как вы можете видеть например, строка заблокирована предполагает разные сообщения в соответствии с ответом формы. Есть ли способ перевести все разные сообщения в одну и ту же строку и передать ее параметром в jsp, или мне нужно создавать разные строки для каждого сообщения?

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