我在xforms中很新。这个问题似乎很简单。我有一个xform,其中包含两个文本框和一个按钮控件。我希望当用户提交表单时,文本框中的值存储在xform模型中。我怎么能这样做?
下面给出了代码,当我点击按钮时,模型元素中的值不会改变。
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:form="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events" xml:lang="en">
<head>
<link rel="stylesheet" type="text/css" href="test.css" />
<script type="text/javascript" src="formfaces.js"></script>
<form:model>
<form:instance>
<data xmlns="">
<textbox1>0</textbox1>
<textbox2>1</textbox2>
<textbox3>2</textbox3>
<textbox4>3</textbox4>
</data>
</form:instance>
<form:submission action="Text.html" id="submission" method="put" replace="instance"/>
</form:model>
</head>
<body>
<table>
<tr>
<td>
<form:input ref="/data/textbox1">
<form:label>TextBox1</form:label>
</form:input>
</td><td>
<form:input ref="/data/textbox2">
<form:label>TextBox2</form:label>
</form:input>
</td></tr>
<tr><td><form:input ref="/data/textbox3">
<form:label>TextBox3</form:label>
</form:input>
</td><td><form:input ref="textbox4">
<form:label>TextBox4</form:label>
</form:input>
</td></tr>
</table>
<form:submit submission="submission"><form:label>Submit</form:label></form:submit>
</body>
</html>
答案 0 :(得分:0)
应该自动处理。
但是如果您试图立即在屏幕上显示模型更改,请确保将incremental="true"
属性添加到xforms输入元素,以便每次击键生成更新事件,并且还会刷新xforms输出元素。
<强>加入:强>
您似乎正在提交HTML。我猜它是包含表单本身的html。您不需要像这样调用它来更新模型。您通常使用PUT提交调用脚本以将其存储在服务器上。 PUT通常也不会返回某些内容,但它可以返回您正在播放的内容的副本。
我对您的代码进行了两项重要更改,以显示模型是否自动更新。我复制了表格输入表并将输入重命名为输出。我还在输入上添加了增量属性,以便在每次击键后更新输出。您可能还注意到我添加了一些CSS,但这只是为了使输出的标签和值可以区分:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:form="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events" xml:lang="en">
<head>
<link rel="stylesheet" type="text/css" href="test.css" />
<script type="text/javascript" src="formfaces.js"></script>
<style type="text/css">
label {
display: block;
float: left;
clear: both;
text-align: right;
padding-right: 1em;
width : 110px;
}
</style>
<form:model>
<form:instance>
<data xmlns="">
<textbox1>0</textbox1>
<textbox2>1</textbox2>
<textbox3>2</textbox3>
<textbox4>3</textbox4>
</data>
</form:instance>
<form:submission action="test.xml" id="submission" method="put" replace="instance"/>
</form:model>
</head>
<body>
<table>
<tr>
<td>
<form:input ref="/data/textbox1" incremental="true">
<form:label>TextBox1</form:label>
</form:input>
</td><td>
<form:input ref="/data/textbox2" incremental="true">
<form:label>TextBox2</form:label>
</form:input>
</td></tr>
<tr><td><form:input ref="/data/textbox3" incremental="true">
<form:label>TextBox3</form:label>
</form:input>
</td><td><form:input ref="textbox4" incremental="true">
<form:label>TextBox4</form:label>
</form:input>
</td></tr>
</table>
<table>
<tr>
<td>
<form:output ref="/data/textbox1">
<form:label>TextBox1</form:label>
</form:output>
</td><td>
<form:output ref="/data/textbox2">
<form:label>TextBox2</form:label>
</form:output>
</td></tr>
<tr><td><form:output ref="/data/textbox3">
<form:label>TextBox3</form:label>
</form:output>
</td><td><form:output ref="textbox4">
<form:label>TextBox4</form:label>
</form:output>
</td></tr>
</table>
<form:submit submission="submission"><form:label>Submit</form:label></form:submit>
</body>
</html>
如果使用对某个.asp脚本的引用替换submission action属性的值,它将被调用,并将在请求正文中接收整个实例。确保返回一个完整的实例,因为它将被替换。
HTH!