Struts2 свойство неоднозначности - PullRequest
0 голосов
/ 15 февраля 2012

Я создаю проект в Struts2Я создал страницу Registration.jsp, как показано ниже.

<s:form name="registration" action="Registration" >
<s:textfield name="user.userName" label="UserName"></s:textfield>
<s:textfield name="user.userName" label="Password"></s:textfield>
<s:textfield name="user.userName" label="Re-Enter Password"></s:textfield>
<s:textfield name="user.userName" label="Name"></s:textfield>
<s:textfield name="user.userName" label="DOB"/>
<s:textfield name="user.userName" label="email"></s:textfield>
<s:textfield name="user.userName" label="Portfolio Name"></s:textfield>
<s:submit></s:submit>
</s:form>

Как видно выше, я пытаюсь дать всем полям одинаковое имя, и оно используется для установки значений.После вызова действия, когда я пытаюсь перенаправить результат в jsp и пытаюсь отобразить имя пользователя, оно будет отображаться, как показано ниже

, если мы введем a, b, c, d и e в качестве параметра соответственно в данных полях.Я получаю вывод точно (включен в вывод), как это - Привет a, b, c, d, e ..

Я не понимаю, почему это происходит .. у кого-нибудь есть идея?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Так работает взаимодействие между клиентом и сервером. С точки зрения HTML все будет отправлено на сервер с использованием пар ключ-значение String.

Значение устанавливается в классе Action и интерпретируется как Collection / Arrayявляется функцией S2 и ее механизмом преобразования (преобразование OGNL и XWork).

Поэтому, когда ваши значения отправляются в виде ключа со значениями, такими как user.userName=a,b,c,d,e, и вы объявили коллекцию / массив в своем классе действий, так что S2в действие вступает механизм преобразования типов, который преобразует эти значения в массив / коллекцию и устанавливает их в соответствующем свойстве класса действий.

В обратном случае HTML будет знать только String, и снова с сервера они отправляются в качестве ключа и значений, и поскольку вы не просите ваш механизм S2 войти в игру, чтобы это печаталось в вашем HTMLсогласно вашему описанию.

0 голосов
/ 15 февраля 2012

Когда вы отправляете эту страницу, URL будет выглядеть как ?user.userName=a&user.userName=b&user.userName=c&user.userName=d&user.userName=e.Struts2 считает это Collection или Array.Когда вы берете это значение в String типизированный параметр, значения разделяются запятыми и сохраняются.Позже, это то, что отображается на вашей странице после вызова действия.

...