1

컨트롤러에서 보낸 객체를 JSP에서 처리하기 위해 Spring MVC 및 jQuery를 사용하고 있습니다.jQuery에서 변수 이름을 사용하여 modelAttribute에 액세스하는 방법

내 컨트롤러를 사용하여 JSP 여러 개체에 보내는 :

형태는 다음 클래스의 목적은
modelAndView.addObject("roleForm" + rol.getRolecode(), form); 

: 그래서

public class RoleForm 
{ 
    private String roleCode; 
    private LinkedHashSet<String> listEnabled; 
... getters and setters ... 
} 

, 내가 보내고있다 객체를 키 roleFormADMIN로 , roleFormUSER 등이 있습니다. 이러한 객체의 수량과 이름은 데이터베이스에서 검색되므로 알 수 없습니다. 내 JSP에서

나는 각 ROL에 대해 접근하고있어, 그 대응 RoleForm :

<c:forEach items="${rolesList}" var="role"> 
    <div class="role" id="${role}"> 
     <label class="adminSectionTitle"> 
      ${role} 
     </label> 

     <form:form method="post" id="roleForm${role}" modelAttribute="roleForm${role}" action="roles.html"> 
      <fieldset> 
       <form:hidden path="roleCode"/> 

       <div class="pickList"> 
        <fieldset class="pickItems"> 
         <legend >Enabled</legend> 

         <form:select path="listFunctEnabled" id="combo1" size="5" multiple="true">  
          <form:options items="${listFunctEnabled}" /> 
         </form:select> 
        </fieldset> 

       </div> 
      </fieldset> 
      <div class="formButtons">      
       <input type="submit" value="<fmt:message key="button.save"/>" /> 
       <input type="button" name="reset" onclick="location.href='<c:url value="roles.html"/>'" value="<fmt:message key="button.clear"/>" />             
      </div> 
     </form:form>   
    </div> 
</c:forEach>    

각 RoleForm의 속성 roleCode가 제대로 검색되지만 양식의 재산 listFunctEnabled을 (액세스 할 수 없습니다 그것은 비어있다).

양식의 이름 (예 : roleFormADMIN.listFunctEnabled)을 직접 작성한 경우 : options의 형식으로 목록의 모든 항목을 작성합니다.

roleForm $ {role} .listFunctEnabled를 사용하는 경우이를 String으로 간주하고 String에 listFunctEnabled라는 속성이 없음을 나타냅니다.

functenabled 목록을 업데이트하려면 각 역할마다 하나의 단추가 있어야하므로 각 역할마다 하나의 양식이 필요합니다.

어떻게하면됩니까?

+0

'RoleForm'의 필드 이름은'listEnabled'입니다. 'getListFunctEndabled' 또는'getListEndabled'라는 이름의 getter가 있습니까? –

+0

getListFunctEnabled라고 불렀습니다. 편집 할 때마다 나쁘다. – Goyo

답변

0

이를 사용합니다. 그래서, 내 컨트롤러에서 모든 역할 (해시 맵의 키)에 대해 listFunctEnabled List로 맵을 채우고 있습니다. 예 : map [ROLE_ADMIN] = {Funct1, Funct2, Funct3}

RoleForm은 동일하므로 선택된 항목은 listFunctEnabled 속성에 저장됩니다.

는 이제 JSP에, 그 다음에 액세스하지 :

<form:form method="post" id="roleForm${role}" modelAttribute="roleForm${role}" action="roles.html"> 
    <fieldset> 
     <form:hidden path="roleCode"/> 

     <div class="pickList"> 
      <fieldset class="pickItems"> 
       <legend >Enabled</legend> 

       <form:select path="listFunctEnabled" id="combo1" size="5" multiple="true">  
        <form:options items="${map[role]}" /> 
       </form:select> 

      </fieldset> 
     </div> 
    </fieldset> 
</form:form> 

그리고 해당 솔루션에 문제. 희망이 다른 사람에게 유용 할 수 있습니다.

0

modelAttribute 값을 다른 변수로 설정 한 다음 listFunctEnabled 목록에 액세스하려고 시도 했습니까? 이것이 내가 생각하는 것입니다.

<c:set var="roleFormName" value="roleForm${role}"/> 

는 마침내는 HashMap보다는 세트를 사용하여 문제를 해결 한 select 태그

<form:select path="listFunctEnabled" id="combo1" size="5" multiple="true">  
    <form:options items="${roleFormName.listFunctEnabled}" /> 
</form:select> 
+0

예, 시도했지만 작동하지 않았습니다. 마침내 다른 작업장을 사용했습니다. 주제에 게시하겠습니다. – Goyo

관련 문제