Axure系列教程(七):变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Axure系列教程(七):变量相关的知识,希望对你有一定的参考价值。

参考技术A 上一节内容我们能学会了如何在页面之间跳转,我们这一节课来说说变量。辣么神马是变量呢,变量我们可以这样子理解,我们在数学中都知道有个未知数X吧,辣么变量就跟未知数差不多。都是未知的。变量又细分为全局变量和局部变量

1.全局变量

全局变量听起来赶脚范围挺大,好牛的说。事实上确实如此。全部变量在原型的每一个页面都可以进行调用。辣么全局变量在哪儿呢?

工具栏(项目)--全局变量

2.局部变量

局部变量听起来范围很小,他只针对当前页面,其他页面调用不了。

局部变量往往需要配合其他元件进行使用,单独是不存在的。

3.在页面中传递变量

在原型当中登录和登录成功或者是登录和主页面,往往需要传递用户名,那这个用户名怎么传递的呢。

我们在上一节内容的RP上进行修改,请点击 第一次交互:实现跳转页面 查看上一节内容。

首先我们可以创建一个全局变量laodname用来保存用户名,我们用户名是从文本框进行输入的,不能直接保存到全局变量中,我们需要通过局部变量。

通过这样子我们把文本框中输入的用户名就保存到了全局变量中。当我们点击登录的时候跳转到page1页面就不要跳到百度了,我们将用户名保存到全局变量的操作一定要在跳转之前,只有这样才会被保存,在跳转之后,那么就没有意义了,涉及到了一个执行顺序问题

struts2官方 中文教程 系列七:消息资源文件

介绍

在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定)。消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字段标签,并根据用户的语言环境将文本更改为特定的语言。

 

贴个本帖的地址,以免被爬:struts2官方 中文教程 系列七:消息资源文件  即 http://www.cnblogs.com/linghaoxinpian/p/6911223.html 

下载本章节代码

 

信息资源属性文件

在Struts2 web应用程序中,我们可以通过创建具有与Action类相同名称的属性文件(.properties )来将消息资源属性文件与每个Struts 2 Action类关联起来。这个属性文件必须与Action类在相同的包下。对于我们的教程示例,假设我们希望将label标签显示的内容放置到一个单独的文件中,在这个文件中我们可以轻松地更改它们,并提供在其他语言中显示的功能。

 

新建属性properties文件

Register.properties

personBean.firstName=First name
personBean.lastName=Last name
personBean.age=Age
personBean.email=Email
thankyou=Thank you for registering %{personBean.firstName}.

以上只是一个标准的Java属性文件。key左value右。当Register action 被执行时,试图页面通过key引用该资源文件。

Key Attribute

Register.properties的key属性可以在textfield标签中使用,以告诉struts2框架 name和label属性使用什么值。避免了直接提供这些属性的值。打开register.jsp

      <s:textfield name="personBean.firstName" label="First name" />

修改为

<s:textfield key="personBean.firstName"  />

key属性指示Struts 2框架textfield的name属性(<s:textfield name="...."/>)的值使用与key的值(即name="personbean.firstName")。对于label属性的值,Struts 2在register.properties中找到键(key)personBean.firstName,然后将对应的值赋予label属性。

为了使能经过Action的处理后在跳转到register.jsp而不是直接打开register.jsp,我们需要打开index.jsp,进行修改

<p><a href="register.jsp">Please register</a> for our prize drawing.</p>

修改为

<s:url action="registerInput" var="registerInputLink" />
<p><a href="${registerInputLink}">Please register</a> for our prize drawing.</p>

我们使用Struts2的url标签来创建一个到registerInput的链接。然后我们使用该链接作为a标签的href属性值,并且在struts.xml中定义registerInput。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

    <constant name="struts.devMode" value="true" />

    <package name="basicstruts2" extends="struts-default">
        <action name="index">
            <result>/index.jsp</result>
        </action>
        <!--hello-->
        <action name="hello" class="action.HelloWorldAction" method="execute">
            <result name="success">/HelloWorld.jsp</result>
        </action>
        
        <!-- register -->
        <action name="register" class="action.RegisterAction" method="execute">
            <result name="success">/thankyou.jsp</result>
            <result name="input">/register.jsp</result>
        </action>
        
        <!-- registerInput -->
        <action name="registerInput" class="action.RegisterAction" method="input" >
            <result name="input">/register.jsp</result>
        </action>
    </package>

</struts>

 

运行

 

 

官网话太多,我直接画张图来说明执行流程。

图片太小就把图片拖到另一个浏览器窗口查看原图。

 

我们也可以使用 struts2的text标签来访问资源文件,因为thankyou.jsp也是通过RegisterAction来处理渲染给用户的,所以在thankyou中也可以访问RegisterAction.properties资源文件,修改thankyou.jsp中h3标签

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Registration Successful</title>
  </head>
  <body>
    <h3><s:text name="thankyou" /></h3>

    <p>Your registration information: <s:property value="personBean" /> </p>

    <p><a href="<s:url action=\'index\' />" >Return to home page</a>.</p>
  </body>
</html>

 

 运行有同样的效果

 

 %{personBean.firstName} 告诉Struts 2调用getPersonBean,该方法返回一个Person对象。然后调用该对象的getFirstName方法,该方法返回一个字符串(用户输入到form表单的值),用最后的结果来替换这个部分

Package Level Properties(包级别的属性

上面的方法中,我们的属性文件(/struts_basic/src/action/RegisterAction.properties)必须要与对应的Action类(/struts_basic/src/action/RegisterAction.java)同名才可使用,那么如何才能是所有Action都能使用同一个属性文件(.properties)呢?

新建一个名为:package.properties的文件src/action/ 下,那么该包下所有Action均可使用该属性文件

 

package.properties内容如下:

greeting=Welcome to The Wonderful World of Struts 2

为了测试,在HelloWorld.jsp中添加一个h1标签

运行如下

全局属性文件

当然我们也可以在struts.xml文件中定义一个全局的属性文件(Global Properties),这个属性文件可以被所有视图页面引用。

添加以下内容到名为 global.properties 的文件中,当然,文件名称不必要是global.properties

/src/global.properties

contact=For assistance contact <a href=\'mailto:contact@email.com\'>contact@email.com</a>

 struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

    <constant name="struts.devMode" value="true" />
    <!-- 全局属性文件start -->
    <constant name="struts.custom.i18n.resources" value="global" />
    <!-- 全局属性文件end -->
    <package name="basicstruts2" extends="struts-default">
        <action name="index">
            <result>/index.jsp</result>
        </action>
        <!--hello-->
        <action name="hello" class="action.HelloWorldAction" method="execute">
            <result name="success">/HelloWorld.jsp</result>
        </action>

接着我们在index.jsp中使用这个global.properties文件

index.jsp

运行如下

 国际化

使用消息资源文件(即属性文件.properties)还允许您提供不同语言的文本。默认情况下,Struts 2将使用用户的默认语言环境。如果该地区是英语的,那么使用的属性文件将是没有地区规范(例如RegisterAction.properties)的属性文件。如果地区不是英语,而是说西班牙语(es),那么Struts 2将寻找一个名为RegisterAction_es.properties的属性文件。创建一个名为RegisterAction_zh.properties的文件。该文件中添加了下面的中文的翻译。

src/action/RegisterAction_zh.properties

personBean.firstName=姓氏
personBean.lastName=名字
personBean.age=年龄
personBean.email=邮箱
thankyou=感谢您的注册, %{personBean.firstName}. 

运行如下

 

以上是关于Axure系列教程(七):变量的主要内容,如果未能解决你的问题,请参考以下文章

Axure系列教程(十一):HighCharts设计统计图表

C语言系列教程完整版

struts2官方 中文教程 系列七:消息资源文件

Axure RP 9怎么汉化?

Docker教程系列七:Docker上部署Redis

Influx Sql系列教程七:delete 删除数据