如何在XForms文本框中保存用户输入的值

时间:2012-03-16 12:25:50

标签: xforms

我在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>

1 个答案:

答案 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!