2013-06-04 32 views
0

我正在使用SpringMVC3.2和JSP,我试图显示用户信息。但我有问题在JSP页面上显示它。JSTL无法从服务器接收数据

这里是我的控制器和JSP页面:

@Controller 
@RequestMapping("/map") 
public class EventDataController { 

    private Logger log = LoggerFactory.getLogger(EventDataController.class); 

    @Autowired EventDataService eventDataService; 
    @Autowired UserService userService; 

    @RequestMapping(method = RequestMethod.GET) 
    public ModelAndView index() { 

     ModelAndView mv = new ModelAndView("devicemap"); 

     UserDetails sessionUser = SecurityUtils.currentUserDetails(); 
     User user = userService.findUser(sessionUser.getUsername()); 
     log.info("user==>" + user); 
     if (user==null){ 
      mv.addObject("error", "Cannot find user."); 
     } else { 
      mv.addObject("user", user); 
       } 
     return mv; 
    } 

} 

devicemap.JSP 

<span class="alert" id="userInfo"> 
    <c:choose> 
    <c:when test="${!empty user}"> 
     ${user.userId} 
    </c:when> 
    <c:otherwise> 
     User not found 
    </c:otherwise> 
    </c:choose> 
</span> 


applicationContext.xml 

    <!-- ViewResolver for JSP --> 
    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix"> 
      <value>/WEB-INF/pages/</value> 
     </property> 
     <property name="suffix"> 
      <value>.jsp</value> 
     </property> 
    </bean> 

当我检查用户对象的控制器,它拥有用户数据和devicemap.jsp是在WEB-INF /页。

我做错了什么?任何帮助,将不胜感激。

+0

它在我将ModelAndView中的键名更改为任何其他名称而不是'user'时起作用。 '用户'是JSTL中的保留关键字吗? – sunghun

+0

我不认为'user'是JSTL的关键字。更改密钥名称后,是否尝试再次将其更改回'user'?如果它的工作原理和你的服务器是'Tomcat',我想原因是'jsp'文件被缓存在'work'文件夹中。你可以尝试并提供一些反馈? –

回答

1

如果我没有错,检查'用户'的条件是不正确的。

您应该使用

<c:when test="${not empty user}"> 

<c:when test="${user ne null}"> 

希望这有助于你。 :)

+0

谢谢,但用户只用$ {user}时用户为空。 – sunghun

-1

尝试将JstlView添加到您的InternalResourceViewResolver

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.JstlView"/> 
    <property name="prefix"> 
     <value>/WEB-INF/pages/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 

这将确保您的JSP中的EL表达式得到正确评估。

+0

这是自动完成的...还JstlView只包含一些本地化的东西。 –

+0

谢谢你们。我同意@Pavel。当我在除了我的问题之外的任何页面中使用JSTL表达式时,我没有任何问题。 – sunghun

1

那么根据我你已经犯了JSTL语法的错误,所以用于打印数据或只看到如下。

<C:if test="${!empty user}"> 


</c:if> 

或者你也可以做这个事情。

<c:when test="${not empty user}"> 
    </c:when> 

或者你也可以这样做。

<c:when test="${!empty user}"> 
    </c:when> 

试试这个,你的pron将会短路。

相关问题