Как получить значение 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')