xforms:如何防止 xxforms:默认值覆盖用户输入
我有一个下拉菜单来显示状态,可以是启用(true)或禁用(false)。这是我的 xml 实例。
<?xml version="1.0" encoding="UTF-8"?>
<page>
<file-name></file-name>
<status></status>
</page>
默认情况下,状态应为 true。所以我将其设置为绑定,如下所示。
<xforms:bind nodeset="./status" xxforms:default="true()" />
当用户在下拉列表中选择禁用时,状态应保存为 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 使用 false 状态值保存。
我该如何解决这个问题?
这是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>
I have a dropdown to display status, which can be Enabled(true) or Disabled(false). Here is my xml instance.
<?xml version="1.0" encoding="UTF-8"?>
<page>
<file-name></file-name>
<status></status>
</page>
By default, status should be true. So I have set it in binding as follows.
<xforms:bind nodeset="./status" xxforms:default="true()" />
When user chooses Disabled in the dropdown, the status should get saved as false. Here is the xml that gets saved when I save the form.
<page>
<file-name>StatusDisabled.xml</file-name>
<status>false</false>
</page>
When I open the form in edit mode, this is the xml I get in the XML inspector widget.
<page>
<file-name>StatusDisabled.xml</file-name>
<status>true></status>
</page>
Status gets set to true because of xxforms:default, even though the xml is saved with a false value for status.
How can I fix this?
Here is the 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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果发生这种情况,那就是一个错误。
xxforms:default
只能评估一次。If this happens, it's a bug.
xxforms:default
should only be evaluated once.