Скажем, у меня есть файл struts.properties с определенным значением uploads.directory. Как я могу получить доступ к этому значению из Actioncontext программно?Как вы произвольно получаете значение Struts2 из файла .properties?
ответ
Вы можете использовать GetText («some.property.name»), который вернет вам значение свойства
http://struts.apache.org/maven/struts2-core/apidocs/com/opensymphony/xwork2/ActionSupport.html
Вам нужно поместить файл my.properties файл или my_locale.propeties в пакете, размещает ваш класс действий.
Вам нужно поместить значения в файлы свойств, отличные от struts.properties, для примеров ApplicationResources.properties
или my.properties
, которые должны быть в пути к классам. 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')
вы можете получить значение из файла сообщения ресурсов, как это:
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')" />
для получения дополнительной информации вы можете перейти по этой ссылке: get info here
Создание 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>
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>
глобальным.свойства
action.welcome.username=waqar
В классе действий
System.out.println(getText("action.welcome.username"));
выше ссылка не работает. –
Ссылка @MandarPandit была обновлена до http://struts.apache.org/maven/struts2-core/apidocs/com/opensymphony/xwork2/ActionSupport.html – timbru31
Спасибо за обновление .. :) –