2013-06-04 29 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將會短路。

相關問題