Рубрики
Без рубрики

Пример интернационализации или локализации Struts

– Пример интернационализации или локализации Struts

Это пример локализации Struts, отображающий базу сообщений или контента на указанном выбранном языке. По умолчанию Struts будет хранить атрибут локали для каждого пользователя в контексте сеанса под ключом ” org.apache.struts.action. LOCALE “, все, что вам нужно сделать, это поиграть с этим атрибутом сеанса.

1. Структура проекта

Это структура проекта.

2. Файл свойств

Все сообщения о локализации объявляются в файле свойств в формате ” имя_файла_локального кода.свойства “. Вы можете проверить код локали в Ява. Утиль. Язык класс. например,

  • Английский – Common.properties или Common_en_US.свойства
  • Китайский – Common_zh_CN.свойства
  • Франция – Common_fr.свойства
  • Немецкий – Common_de.свойства

Немецкий – Common_de.свойства

#error message
error.common.username.required = Username is required
error.common.password.required = Password is required

#label message
label.common.message = localization example
label.common.username = Username 
label.common.password = Password
label.common.button.submit = Submit

Немецкий – Common_de.свойства

#error message
error.common.username.required = Benutzername ist erforderlich
error.common.password.required = Passwort ist erforderlich

#label message
label.common.message = Lokalisierung Beispiel
label.common.username = Benutzername 
label.common.password = Kennwort
label.common.button.submit = Einreichen

3. Класс действий

Создайте класс действий, который расширяет DispatchAction для нескольких целей действий.

package com.mkyong.common.action;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.Globals;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class LanguageSelectAction extends DispatchAction{
	
	public ActionForward chinese(ActionMapping mapping,ActionForm form,
		HttpServletRequest request,HttpServletResponse response) 
	throws Exception {
		
		request.getSession().setAttribute(
				Globals.LOCALE_KEY, Locale.SIMPLIFIED_CHINESE);
		
		return mapping.findForward("success");
	}
	
	public ActionForward english(ActionMapping mapping,ActionForm form,
		HttpServletRequest request,HttpServletResponse response) 
	throws Exception {
		
		request.getSession().setAttribute(
				Globals.LOCALE_KEY, Locale.ENGLISH);
		
		return mapping.findForward("success");
	}
	
	public ActionForward german(ActionMapping mapping,ActionForm form,
		HttpServletRequest request,HttpServletResponse response) 
	throws Exception {
		
		request.getSession().setAttribute(
				Globals.LOCALE_KEY, Locale.GERMAN);
		
		return mapping.findForward("success");
	}
	
	public ActionForward france(ActionMapping mapping,ActionForm form,
		HttpServletRequest request,HttpServletResponse response) 
	throws Exception {
		
		request.getSession().setAttribute(
				Globals.LOCALE_KEY, Locale.FRANCE);
		
		return mapping.findForward("success");
	}
	
}

4. Форма Действия

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

package com.mkyong.common.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

public class UserForm extends ActionForm{
	
	String username;
	String password;
	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public ActionErrors validate(ActionMapping mapping,
		HttpServletRequest request) {
		
	    ActionErrors errors = new ActionErrors();
	      
	    if( getUsername() == null || ("".equals(getUsername())))
	    {
	       errors.add("common.username.err",
	    	new ActionMessage("error.common.username.required"));
	    }
	      
	    if( getPassword() == null || ("".equals(getPassword())))
	    {
	       errors.add("common.password.err",
	    	new ActionMessage("error.common.password.required"));
	    }
	    
	    return errors;
	}
	
	@Override
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		// reset properties
		username = "";
		password = "";
	}
}

5. JSP

Создайте страницу JSP для отображения выбора языка, значения формы, а также сообщения об ошибке. Метод ” /Locale.do?=китайский “будет соответствовать методу DispatchAction китайский() .

<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>








Chinese English German France
:

:

6. “будет соответствовать методу DispatchAction ||китайский()||.

Сложи все это вместе.







	
		
	
	

	
	
		
		
		
			
		
		
		
			
		
		
	

	


7. Сложи все это вместе.

Интегрируйте платформу Struts в файл дескриптора веб-развертывания.





  Maven Struts Examples
  
  
    action
    
        org.apache.struts.action.ActionServlet
    
    
        config
        
         /WEB-INF/struts-config.xml
        
    
    1
  
    
  
       action
       *.do
  


Снимок экрана

http://localhost:8080/StrutsExample/LoginPage.do

Вы можете изменить интерфейс по языковым ссылкам.

Интерфейс на английском языке

Китайский интерфейс

Интерфейс Франции

Немецкий интерфейс

Оригинал: “https://mkyong.com/struts/struts-internationalizing-or-localization-example/”