2012-03-16 257 views
0

我在xforms中很新颖。这个问题似乎很简单。我有一个包含两个文本框和一个按钮控件的xform。我希望当用户提交表单时,文本框中的值存储在xform模型中。我如何做到这一点?如何在XForms文本框中保存用户输入的值

代码如下,当我点击按钮时,模型元素中的值不会改变。

<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

正如@ grtjn所说,这应该是自动工作的,但如果您已经尝试过并且它不适合您,也许您可​​以与我们分享您的代码,以便我们可以重现您所看到的问题。 – avernet 2012-03-16 16:51:04

+0

我分享了代码。请回复,我们如何解决这个问题 – 2012-03-17 17:06:33

回答

0

这应该自动处理。

但是,如果您试图立即在屏幕上显示模型更改,请确保将incremental="true"属性添加到xforms输入元素,以便每个击键都会生成更新事件,并且刷新xforms输出元素。

补充说:

你似乎被提交到HTML。我猜测它是包含表单本身的html。你不需要像这样调用它来更新模型。您通常使用PUT提交来调用脚本以将其存储在服务器上。 PUT通常不会返回任何东西,但它可能会返回您正在PUT'ing的副本。

我把你的代码做了两个重要的更改,以显示模型自动更新。我复制了你的表格输入表并将输入重命名为输出。我还在输入上添加了增量属性,以便在每次击键后更新输出。您可能还注意到我平添了几分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的脚本参考替换提交action属性的值它会被调用,并且会在请求体中接收整个实例。确保返回完整的实例,因为它将被替换。

HTH!

+0

我分享了代码,但它不工作。请回复 – 2012-03-17 17:07:11

+0

谢谢......!还有一件事我想问。你能指导我如何使用put提交调用脚本来获取存储在服务器上的xml文件中的值。我试过并能够从XML文件加载值,但我不知道,如何将值存储在该文件中。我使用服务器端的asp.net和数据库的sql server – 2012-03-18 03:37:18

+0

@ zeeshan-hasan我添加了一个段落到最后。我希望它能帮助你进一步。 – grtjn 2012-03-21 15:21:20

相关问题