xpagesxpages入门


备注

XPages是IBM Notes平台的Web框架。它是在Lotus Domino 8.5中引入的(必须进行验证)

它基于JSF(JavaServer Faces),具有许多有用的扩展来表示和操作IBM Notes数据。

IBM提供XPage教程: https//www-10.lotus.com/ldd/ddwiki.nsf/dx/Tutorial-intro-to-XPages.htm

幕后花絮在后端XPage是XML文件,类似于HTML。 Domino Server最终生成真正的HTML并将这些页面发送到客户端。业务逻辑在本机 JavaScript(“clientside JavaScript - CSJS”)和 JavaScript(“serverside JavaScript - SSJS”)中实现。

安装或设置

简而言之:XPages是IBM Domino Designer的一部分。 XPage不需要额外的设置或安装。


第一个XPage / Hello-World-Example

要创建第一个XPage,您必须先创建一个新的NSF。打开IBM Domino Designer,打开菜单“ File ” - >“ New ” - >“ Application ”。

在弹出的对话框中进行以下设置:

  1. 选择将创建NSF的服务器(也可以是“本地”)。
  2. 然后输入标题,例如“ Hello World NSF ”。
  3. 然后输入新NSF的文件名,例如“ hello-world.nsf ”。
  4. 忽略“Encription ...”按钮以保持默认设置。
  5. 选中“ 完整索引 ”选项。
  6. 然后单击“确定”。

新的NSF已创建。

现在右键单击应用程序导航器中的“[XPages]”部分,然后选择“ new XPage ... ”。

  1. 输入新XPage的标题,例如“ HelloWorld ”。这将创建一个名为“HelloWorld.xsp”的文件。
  2. 对于这个简单的例子,注释字段可以留空。
  3. 单击“确定”,即可创建页面。

双击新的HelloWorld XPage,您可以在“[XPages]”部分找到它。

选择“源”选项卡(位于编辑器底部),然后在页面中添加一个简单的文本域组件。这应该是结果:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" pageTitle="Hello My World">

  <xp:text id="simpleTextField" value="Hello World!!!!" />

</xp:view>
 

保存页面并构建项目(右键单击应用程序“Hello World NSF”并选择菜单项“build”)。

现在,打开像Internet Explorer这样的浏览器,然后导航到应用程序NSF的新XPage。例如“ http://mydominoserver.com/hello-world.nsf/HelloWorld.xsp ”,您将看到您的Hello World文本。

在XPage中使用带有message.properties的外部文本

准备

首先在Resources / Files /中创建一个“ message.properties ”文件。例:

##############
# Test message.properties
##############
label.age=Enter your age:
validate.error.reqired.age=Sorry, but you have to give away the secret of your age ...
 

接下来,将资源与XPage或自定义控件连接:

<xp:this.resources>
    <xp:bundle src="/messages.properties" var="appMsg" />
    ....
</xp:this.resources>
 

注意:“var”定义要在XPage或自定义控件中使用的名称以引用消息映射。

用法

现在,您可以将消息映射与服务器端JavaScript( #{javascript:appMsg.getString('...')} )或EL( #{appMsg['...']} )一起使用。

用法示例:

...
<!-- to show the error message: -->
<xp:messages />

<!-- use with ssjs: -->
<xp:text value="#{javascript:appMsg.getString('label.age')}" escape="false" />

<!-- use with EL: -->
<xe:djNumberSpinner value="#{myDoc.age}" maxLength="2" javaType="int">
    <xp:this.validators>
        <xp:validateRequired message="#{appMsg['validate.error.reqired.age']}" />
    </xp:this.validators>
</xe:djNumberSpinner>
...