簡體   English   中英

Xpage,createForm = false會禁用鏈接上的SSJS事件嗎?

[英]Xpage, createForm=false disables SSJS events on links?

我在這里要清楚這一點:我意外地將createForm屬性設置為false。 然后,我期望一個鏈接事件應該打開另一個頁面,只是不再運行。 這是SSJS事件的預期行為,例如在禁用表單創建時的鏈接中嗎?

正如Per提到的,所有事件都需要一個表單:如果它們是完全刷新的,那么頁面需要一個表單來發布以觸發重定向; 如果它們是部分刷新,則表單確定AJAX POST的內容。

XPage運行時包括對表單組件的支持,但它不包含在組件面板中(並且無法通過Designer首選項添加),因此將其添加到頁面的唯一方法是直接編輯源XML。 例如:

<xp:form>
    <xp:link id="exampleLink" text="Example Text">
        <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:// event code}]]></xp:this.action>
        </xp:eventHandler>
    </xp:link>
</xp:form>

這個組件有用(至少)有兩個原因:

  1. 它可以提高性能。 如果頁面包含功能不同的不同區域 - 換句話說,頁面的一個部分中的事件不需要知道頁面的任何其他部分中的數據 - 然后將每個部分包裝在單獨的表單組件中導致每個事件僅發布包含在與觸發事件的組件相同的表單內的數據。 您的問題表明,將createForm設置為falsecreateForm的鏈接應該將用戶導航到另一個頁面; 因此,此事件可能不需要知道任何字段值,因為用戶無論如何都要離開當前頁面。 如果這是真的,請以自己的形式包裝此鏈接,並在單獨的表單中包含任何字段,並且鏈接將稍微快速執行,因為瀏覽器不必發布任何字段數據...只是鏈接本身的標識符。
  2. 它可以提供風格靈活性。 對於開發人員而言,與不熟悉Domino的設計人員一起接收與實際最終用戶要求不同的預定CSS是常見的 - 例如,如果網站設計是外包的,或者必須遵守企業風格指南。 當設計師做出某些假設時,這通常會成為緊張的根源,乍一看,這些假設與Domino生成的標記不兼容。 其中一個最常見的例子是當網站包含搜索功能時,因為大多數Web開發人員將擁有一個用於搜索的表單和一個用於任何其他字段的單獨的兄弟表單。 當設計人員或開發人員必須修改設計人員已經開發的樣式表以考慮圍繞所有內容的單個表單標記時,這會增加項目的成本。 簡而言之,抑制默認表單元素並在需要時明確指定表單組件使得更容易遵守外部強加的樣式指南。

所以有許多用例,在XPage上使用一個或多個表單組件實際上是更好的...只要記住所有數據和事件必須在表單內 - 無論是通常包含所有內容的默認表單,還是手動包含表單組件 - 並且表單不能嵌套。 您可以根據需要添加任意數量的表單組件,但它們必須是兄弟姐妹 任何表格都不能包含其他表格。

是的,因為您正在進行HTTP POST請求並且需要表單。

您可以將POST請求鏈接轉換為GET請求鏈接,而不是刪除SSJS事件並創建“基本”鏈接:

<xp:link escape="true" text="Link" id="link2" value="/somepage.xsp"></xp:link>

但是如果你需要SSJS邏輯,那么你還需要一個表格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM