跳转到内容

WebObjects/Project WONDER/快速入门

来自维基教科书,开放世界中的开放书籍

快速入门

[编辑 | 编辑源代码]

使用 Project WONDER 出奇地容易。只需几个步骤即可开始使用。

  1. 下载并安装 Project WONDER 框架;
  2. 将 ERJars.framework 和 ERExtensions.framework 添加到您的 WebObjects 项目中;
  3. 将您的应用程序类更改为扩展 er.extensions.ERXApplication 而不是 WOApplication;
  4. 将您的 Application.main 方法更改为调用 er.extensions.ERXApplication.main 而不是 WOApplication.main;
  5. 将您的 Session 类更改为扩展 er.extensions.ERXSession 而不是 WOSession;
  6. 将您的 DirectAction 类更改为扩展 er.extensions.ERXDirectAction 而不是 WODirectAction;
  7. 构建。

当您使用开箱即用的 Xcode 时,启动此应用程序时会出现错误(截至 2007 年 2 月 6 日)。

“在 NSMutableArray 中未找到 ERX_MARKER 字段。”

这意味着您的类路径不正确。调整它,使 ERExtensions 位于 JavaFoundation 之前。为此,您必须更改类路径的顺序,使 ERExtensions 出现在 JavaFoundation 上方。在我的默认类路径中,JavaFoundation 首先出现在列表中。如果您使用的是 Xcode,请按照 Jerry Walker 的说明操作。

  1. 在 Xcode 窗口左上角的“活动目标”下拉菜单中选择“应用程序服务器”。
  2. 键入命令-选项-e 或选择项目->“编辑活动目标”'应用程序服务器'菜单项。这将打开一个目标编辑窗口。
  3. 在左侧视图的“构建阶段”下选择“将二进制文件链接到库”。
  4. 您可以通过在右侧列表中上下拖动框架来编辑框架加载顺序。将 ERExtensions.framework 拖动到顶部。
  5. 通过在编辑窗格中拖放它们来重新排列这些框架,以任何您想要的顺序。
  6. 将“活动目标”下拉菜单设置回您的项目名称。这很重要。
  7. 清理并重新构建您的应用程序,您的类路径设置将相应地重新排列。

此错误仅在 Xcode 中发生,显然,此解决方法适用于 Xcode 而不是 Eclipse。此外,还有一个用于 ERXApplication 的 Xcode 项目模板可用。(从哪里?)

如果您使用的是 WOLips,您可以创建一个新的“Project Wonder Application”,它将设置一个项目,其中这些步骤已完成。

就是这样!您现在正在使用 Project WONDER,并且您已开始更轻松地进行 WO 应用程序开发之旅。

David Teran 的笔记

[编辑 | 编辑源代码]

来自 David Teran 2004 年 12 月 1 日:了解框架的指针

“PW 包含不同的框架,最重要的一个是 ERExtensions,然后对于 D2W 应用程序,另外还有 ERDirectToWeb,一些如果不是所有人的话,都在使用 ERCoreBusinessLogic。其他框架建立在其中一个或多个框架之上。

但:我建议从阅读类描述开始,然后阅读 javadoc,它是从源代码生成的,使用 Eclipse 在一秒钟内完成(好吧,也许是 60 秒……),阅读大约 1-3 个小时。

然后我会看看 ERXApplication、ERXSession、ERXGenericRecord、ERXEC(非常有趣!)、ERXThreadStorage(也很有趣)、ERExtensions……以及各种实用程序类:ERXEOControlUtilities、ERXEOAccessUtilities、ERXArrayUtilities 等等。”

Chris Meyer 的笔记

[编辑 | 编辑源代码]

国际化和本地化

[编辑 | 编辑源代码]

Practical WebObjects 概述了一种处理国际化的技术。它与 Project WONDER 不兼容。

要在 Project WONDER 中处理国际化,请从您的 Session 类(现在应该从 ERXSession 派生)中删除 takeValuesFromRequest。同样,从您的 Application 类(现在应该从 ERXApplication 派生)中删除 createResponseInContext 方法。然后将以下调用添加到您的 Application 构造函数中。

ERXMessageEncoding.setDefaultEncodingForAllLanguages("UTF8");

日志记录

[编辑 | 编辑源代码]

Practical WebObjects 概述了一种 SQL 日志记录技术。Project WONDER 使用了一种完全不同的技术。

在 Project WONDER 中,将此放入一个属性文件(我使用 ~/WebObjects.properties)中。

# turn off annoying INFO logs
log4j.logger.er=INFO
log4j.logger.er.extensions.ERXExtensions=OFF

# Enable delegate to emit SQL debugging info. The Logger used is
log4j.category.er.extensions.ERXAdaptorChannelDelegate.sqlLogging=DEBUG
#  put this to true if you want to log sql stuff
er.extensions.ERXAdaptorChannelDelegate.enabled=true
# How long a statement must run to cause a log message. Messages with longer than
# error also emit a stack-trace
er.extensions.ERXAdaptorChannelDelegate.trace.milliSeconds.debug=0
er.extensions.ERXAdaptorChannelDelegate.trace.milliSeconds.info=50
er.extensions.ERXAdaptorChannelDelegate.trace.milliSeconds.warn=1000
er.extensions.ERXAdaptorChannelDelegate.trace.milliSeconds.error=5000
# MaxLength of the message
er.extensions.ERXAdaptorChannelDelegate.trace.maxLength = 30000
# What entities to watch
er.extensions.ERXAdaptorChannelDelegate.trace.entityMatchPattern = .*

Project WONDER 提供了几种技术来处理回溯。

我推荐的方法是在您的 WOComponent 中添加一个方法。

    /**
     * Determine whether the user backtracked.
     * @return true or false indicating whether the user backtracked
     */
    public boolean didBacktrack()
    {
    	return ((Session)session()).didBacktrack();
    }

然后,在提交表单的任何地方(回溯可能成为问题),将此代码添加到操作方法中。

if (this.didBacktrack())
    {
    	ec.revert();
    	// handle and prepare to report errors
    	// this.errors.addObject("Unable to process page after back button was pressed.");
    	return this.context().page();
    }

ERXWORepetition 也包含一些处理回溯的代码。截至 Project WONDER 3.0,该代码似乎无法一致地工作。当页面回溯并提交表单时,表单中的值只是作为 null 传递。这往往会引起比它值得的更多问题,尽管您的情况可能有所不同。此外,还有一个选项是在页面回溯时抛出异常,但此异常似乎无法一致地抛出。

从 Wonder 源代码创建 javadoc(不使用 Eclipse)

[编辑 | 编辑源代码]

如果您想创建 javadoc 并且还没有使用 Eclipse 的话。

  1. 从 nightly build 服务器获取最新源代码。
  2. 解压缩后,您将创建一个 Wonder 文件夹。
  3. 在终端应用程序中,% cd 到 Wonder/Build/build 目录。
  4. % ant doc
  5. 等待几分钟,一些好东西会出现在您的终端窗口中(如果 ant 给您错误,您可能需要将其设置为使用 ant 1.4 而不是 1.5,方法是导出:JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.4/Home)
  6. 找到新创建的 dist/wonder-2.0/Documentation/api/index.html 页面,它位于与 Wonder 文件夹解压缩的同一目录中。
  7. 双击 index.html 页面,javadoc 将在您喜欢的浏览器中打开。

从 Wonder 源代码创建 javadoc(使用 Eclipse)

[编辑 | 编辑源代码]

其他人需要补充这一部分……

华夏公益教科书