У меня есть форма 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, или мне нужно создавать разные строки для каждого сообщения?