2

I'm trying to get a list of users and their associated objects using a DTO. So far there is an error.

Model

 public class UserEntity 
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="setter")
    private Set<Module> sModule = new HashSet<Module>();

    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="checker")
    private Set<Module> cModule = new HashSet<Module>(); 
     //getters and setters

DTO

   public class UserEntityDTO {

private List<Module> sModule = new ArrayList<Module>();
private List<Module> cModule = new ArrayList<Module>();

Controller

   @RequestMapping(value = "/main/user/testing", method = RequestMethod.GET)
    public String getRecords(Model model) {

          List<UserEntity> users = userService.getUserEntity();

      List<UserEntityDTO> usersDTO = new ArrayList<UserEntityDTO>();

      for (UserEntity user: users) {
       UserEntityDTO dto = new UserEntityDTO();

      dto.setUserId(user.getUserId());
      dto.setName(user.getName());
      dto.setsModule(moduleService.getSetterModules(user.getUserId()));
      dto.setcModule(moduleService.getCheckerModules(user.getUserId()));

      usersDTO.add(dto);
     }
      model.addAttribute("users", usersDTO);


  return "/main/user/testing";
 }

JSP page

   <table>
        <tr>
            <th>User Id</th>
                    <th>User Name</th>
                    <th>Module</th>
              </tr>
        <c:forEach items="${users}" var="setter" >
             <c:forEach items="${users.sModule}" var="module" >
            <tr>
                <td><c:out value="${setter.userId}" escapeXml="true" /></td>
                <td><c:out value="${setter.name}" escapeXml="true" /></td>


                <td><c:out value="${module.moduleCode}" escapeXml="true" /></td>
                <td><c:out value="${module.moduleName}" escapeXml="true" /></td>
                <td><c:out value="${module.moduleStatus}" escapeXml="true" /></td>

            </tr>
            </c:forEach>
        </c:forEach>
    </table>

The stacktrace

    java.lang.NumberFormatException: For input string: "sModule"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:492)
java.lang.Integer.parseInt(Integer.java:527)
javax.el.ListELResolver.coerce(ListELResolver.java:173)
javax.el.ListELResolver.getValue(ListELResolver.java:52)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
org.apache.el.parser.AstValue.getValue(AstValue.java:183)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106)
org.apache.jsp.WEB_002dINF.views.main.user.testing_jsp._jspx_meth_c_005fforEach_005f1(testing_jsp.java:204)
org.apache.jsp.WEB_002dINF.views.main.user.testing_jsp._jspx_meth_c_005fforEach_005f0(testing_jsp.java:172)
org.apache.jsp.WEB_002dINF.views.main.user.testing_jsp._jspService(testing_jsp.java:111)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

It is taking an exception at the child objects I want to retrieve. How can I make sure that the field I want to get can be accepted.

1
  • Just a note: escapeXml="true" is the default on <c:out>. You don't need to set it. Commented May 4, 2013 at 14:13

1 Answer 1

3

You're accessing modules in your jsp in the wrong way.

This:

<c:forEach items="${users}" var="setter" >
    <c:forEach items="${users.sModule}" var="module" >

tries to access sModule member of users, and since users is a list it tries to convert sModule to integer and use that as an index.

It should probably be:

<c:forEach items="${users}" var="user" >
    <c:forEach items="${user.sModule}" var="module" >
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.