如何以编程方式从.properties文件中获取Struts2值?

时间:2009-04-02 18:48:11

标签: properties struts2 actioncontext

假设我有一个带有定义值uploads.directory的struts.properties文件。如何以编程方式从Actioncontext访问该值?

6 个答案:

答案 0 :(得分:6)

您可以使用getText(“some.property.name”)返回属性值

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

答案 1 :(得分:3)

使用ActionSupport类的getText()方法创建ActionSupport对象。

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

答案 2 :(得分:1)

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>

global.properties

action.welcome.username=waqar

在行动课

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

答案 3 :(得分:0)

您需要将my.properties文件或my_locale.propeties文件放在包含操作类的包中。

答案 4 :(得分:0)

您需要将值放在struts.properties以外的属性文件中,以用于需要在类路径中的示例ApplicationResources.propertiesmy.properties。 struts.properties文件用于加载struts特定的属性,例如struts.i18n.encoding=UTF-8struts.devMode = false等。

在为自定义消息创建属性文件之后,您需要在struts.properties中执行的操作是必须在struts.properties文件中添加以下属性

struts.custom.i18n.resources=ApplicationResources

如果您有多个自定义消息属性文件,则需要通过用逗号分隔来添加它们,例如:

struts.custom.i18n.resources=ApplicationResources,my

然后,在您的操作类中,您可以使用getText('propertyName')

访问属性值

答案 5 :(得分:0)

您可以从消息资源文件中获取值,如下所示:

public class MyAction extends ActionSupport {

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

您还可以获取更多信息,如何从java类或jsp文件中的.properties文件中获取值。 对于JSP:

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

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

有关详细信息,您可以浏览此链接: get info here