我有一個顯示狀態的下拉列表,可以是Enabled(true)或Disabled(false)。這是我的xml實例。xforms:如何防止xxforms:覆蓋用戶輸入的默認值
<?xml version="1.0" encoding="UTF-8"?>
<page>
<file-name></file-name>
<status></status>
</page>
默認情況下,狀態應該爲true。所以我把它設置成如下綁定。
<xforms:bind nodeset="./status" xxforms:default="true()" />
當用戶在下拉菜單中選擇Disabled時,狀態應該保存爲false。這是保存表單時保存的xml。
<page>
<file-name>StatusDisabled.xml</file-name>
<status>false</false>
</page>
當我打開編輯模式的形式,這是XML我的XML檢查部件得到。
<page>
<file-name>StatusDisabled.xml</file-name>
<status>true></status>
</page>
由於xxforms:default,狀態將被設置爲true,即使xml以狀態值爲假來保存。
我該如何解決這個問題?
這裏是XHTML:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms">
<head>
<title>XForms Default</title>
<xforms:model>
<xforms:instance id="instance">
<page>
<name xmlns=""/>
<status xmlns=""/>
</page>
</xforms:instance>
<xforms:instance id="status-instance">
<items>
<item label="Enabled" value="true" xmlns=""/>
<item label="Disabled" value="false" xmlns=""/>
</items>
</xforms:instance>
<xforms:bind nodeset="instance('instance')">
<xforms:bind nodeset="./status" xxforms:default="true()" />
</xforms:bind>
</xforms:model>
</head>
<body>
<p>
<xforms:input ref="instance('instance')/name" incremental="true">
<xforms:label>Please enter your name:</xforms:label>
</xforms:input>
</p>
<p>
<xforms:select1 ref="instance('instance')/status" appearance="minimal" incremental="true">
<xforms:label>Please select status:</xforms:label>
<xforms:itemset nodeset="instance('status-instance')/item">
<xforms:label ref="./@label"/>
<xforms:value ref="./@value"/>
</xforms:itemset>
</xforms:select1>
</p>
</body>
</html>
Purni, 這聽起來像是一個bug:使用'xxforms:default =「true()」'如果表單第一次加載時該值爲空,則該值應該初始化爲'true'。但是,如果用戶選擇一個值,並且'false'被存儲在實例中,那麼'false'應該停留在那裏。你能夠創建一個運行在XForms沙箱中的最小示例並顯示它嗎?如果可能的話,你可以編輯你的問題來粘貼這樣一個例子,這樣我們就可以更好地理解這裏發生了什麼。 -Alex – avernet 2010-07-17 23:30:48
@Alessandro - 我已經編輯了我的問題並給了你一步一步的例子。 – Purni 2010-07-19 16:12:20
謝謝,但我需要一個XHTML + XForms文件,我可以在XForms沙箱中運行以重現該問題。否則,我將不得不編寫猜測你所擁有的代碼,並試圖重現這個問題。 – avernet 2010-07-22 18:34:21