Как получить значение Struts2 из файла.properties программно?

Скажем, у меня есть файл struts.properties с заданным значением uploads.directory . Как я могу получить доступ к этому значению из Actioncontext программно?

6 ответов

Решение

Вы можете использовать getText("some.property.name"), который возвращает вам значение свойства

http://struts.apache.org/maven/struts2-core/apidocs/com/opensymphony/xwork2/ActionSupport.html

Создайте ActionSupport Объект и с помощью getText() метод ActionSupport учебный класс.

ActionSupport actionSupport = new ActionSupport();
actionSupport.getText("foo.bar");

Создайте папку ресурсов в src, в struts.xml файл добавить константу, например, <constant name="struts.custom.i18n.resources" value="global"></constant>Здесь global - это имя файла свойств. Теперь вы сможете использовать свойства во всем приложении.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!-- constant to define result path locations to project root directory -->

    <!-- constant to define global resource bundle -->
    <constant name="struts.custom.i18n.resources" value="global"></constant>

    <package name="user" namespace="/" extends="struts-default">
        <action name="home">
            <result>/home.jsp</result>
        </action>
        <action name="welcome" class="com.waqar.struts2.actions.WelcomeAction">
            <result name="success">/welcome.jsp</result>
        </action>
    </package>

</struts>

The welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title><s:property value="getText('action.welcome.title')"/></title>
    </head>
    <body>
             <s:property value="getText('action.welcome.username')"/>: <s:property value="username"/><br>
    </body>
    </html>

global.properties

action.welcome.username=waqar

В классе действий

System.out.println(getText("action.welcome.username"));

Вы можете получить значение из файла ресурсов сообщения следующим образом:

public class MyAction extends ActionSupport {

   public String getUserDetails() {
      if("First Name".equals(getText("label.firstName"))) {
          System.out.println("In if block");
      }
   }
}

Вы также можете получить больше информации, как получить значения от .properties файлы в java-классе или jsp-файлах. для JSP:

<s:text name="label.firstName" />

а также

<s:property value="getText('label.age')" />

Для получения дополнительной информации вы можете перейти по этой ссылке: получить информацию здесь

Вам нужно поместить файл my.properties или my_locale.propeties в пакет, в котором находится ваш класс действий.

Вы должны поместить значения в файлы свойств, отличные от struts.properties для примеров ApplicationResources.properties или же my.properties который должен быть в classpath. Файл struts.properties используется, например, для загрузки определенных свойств Struts. struts.i18n.encoding=UTF-8 или же struts.devMode = false и т.п.

То, что вам нужно сделать в struts.properties после создания файла свойств для ваших настроенных сообщений, - это добавить следующее свойство в файл struts.properties

struts.custom.i18n.resources=ApplicationResources

Если у вас есть несколько файлов свойств пользовательских сообщений, вам нужно добавить их, разделяя их запятой, например:

struts.custom.i18n.resources=ApplicationResources,my

Затем в ваших классах действий вы можете получить доступ к значениям свойств, используя getText('propertyName')

Другие вопросы по тегам