Как сохранить введенные пользователем значения в текстовом поле XForms - PullRequest
0 голосов
/ 16 марта 2012

Я довольно новый в 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 голосов
/ 16 марта 2012

Об этом нужно позаботиться автоматически.

Но если вы пытаетесь немедленно отобразить изменения модели на экране, обязательно добавьте атрибуты 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, он будет вызван и получит весь экземпляр в теле запроса. Обязательно верните полный экземпляр, так как он будет заменен.

НТН!

...