跳轉到內容

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)

[編輯 | 編輯原始碼]

其他人需要補充這一部分……

華夏公益教科書