Struts 2 (Использование Select вне итератора в jsp приводит к добавлению запятой к значению select вместо его сброса) - PullRequest
0 голосов
/ 20 января 2020

У меня возникла проблема при переносе некоторых кодов стояков 1 в распорки 2. В этом случае вместо выбора одного значения для переменной deptIdFromGrid значение каждого элемента итерации добавляется к переменной. В первый раз это был совершенно рабочий случай, и java классы pojo также не вызывают проблем, которые я уже проверял. (геттеры и сеттеры находятся на правильном месте)

Это исключение, которое я наблюдаю при обнаружении неожиданного исключения, устанавливающего настройку 'searchUser.deptIdFromGrid' в 'классе com.bofa.gems.controller.action.UserRoleAction: выражение ошибки установки' searchUser.deptIdFromGrid 'со значением [' -1 ',' -1 ',' -1 ',' -1 ',' -1 ',' ',' -1 ',' -1 ',]

Фрагмент кода

<select name="searchUser.deptIdFromGrid" id="departmentL<s:property value="%{#count.index}"/>" styleClass="smallselectfordept"
       onKeyDown="javascript:keydownEvent()" onmouseover="onchangeShowTitle(this)"style="width: 250px">

                          <option value="-1" >Select One</option>
                    <s:iterator var="departmentL" value="deptListInGrid">

                    <s:if test="%{searchUser.deptId==#departmentL.id}">
                          <option
                          title='<s:property value="{#departmentL.value}"/>'
                        label='<s:property value="{#departmentL.value"/>'
                          value='<s:property value="{#departmentL.id"/>'
                    selected="selected"><s:property value="{#departmentL.value}" /></option>
                    </s:if>
                          <s:else>
                          <option
                    title='<s:property value="{#departmentL.value}"/>'
                    label='<s:property value="{#departmentL.value"/>'
                    value='<s:property value="{#departmentL.id"/>'
                    ><s:property value="{#departmentL.value}" /></option>
                    </s:else>
                    </s:iterator>
                    </select>
                    </td>
               </s:if>

             <s:else>
             <s:hidden name="searchUser.deptIdFromGrid" value=""></s:hidden>
             <td class="generaltext"><span><s:property value="%{#users.deptName}"/></span></td>
       </s:else>

Struts 1 эквивалентный код

<html:select property="searchUser.deptIdFromGrid" styleId='<%="departmentL"+count%>' styleClass="smallselectfordept" onKeyDown="javascript:keydownEvent()" onmouseover="onchangeShowTitle(this)">
                                                    <html:option value="-1" >Select One</html:option>
                                                    <%-- <html:optionsCollection    name="UserRoleForm" property="departmentList" label="value" value="id" />  --%> 
                                                        <logic:iterate id="departmentL" name="UserRoleForm"
                                                                        property="deptListInGrid">
                                                                        <bean:define id="selectedId" name="departmentL" property="id" />
                                                                        <logic:equal name="UserRoleForm" property="searchUser.deptId"
                                                                            value="<%=(String)selectedId %>">
                                                                            <option
                                                                                title="<bean:write name="departmentL" property="value"/>"
                                                                                label="<bean:write name="departmentL" property="value"/>"
                                                                                value="<bean:write name="departmentL" property="id"/>"
                                                                                selected="selected"><bean:write name="departmentL"
                                                                                property="value" /></option>
                                                                        </logic:equal>
                                                                        <logic:notEqual name="UserRoleForm" property="searchUser.deptId"
                                                                            value="<%=(String)selectedId %>">
                                                                            <option
                                                                                title="<bean:write name="departmentL" property="value"/>"
                                                                                label="<bean:write name="departmentL" property="value"/>"
                                                                                value="<bean:write name="departmentL" property="id"/>"><bean:write
                                                                                name="departmentL" property="value" /></option>
                                                                        </logic:notEqual>
                                                                    </logic:iterate>
                                                    </html:select>
...