2009-10-07 9 views
8

में मॉडल से ऑब्जेक्ट्स प्रदर्शित नहीं कर रहा है मेरे पास हल करने के लिए एक आसान समस्या होनी चाहिए, लेकिन मुझे कोई भाग्य नहीं है।जेएसपी वसंत

मेरी सर्वलेट-servlet.xml फ़ाइल में, मैं निम्नलिखित सेम (दूसरों के अलावा) है:

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

<context:component-scan base-package="com.servlet.web" /> 

मेरा परीक्षण नियंत्रक इस तरह दिखता है:

package com.servlet.web; 

import java.util.Map; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller 
public class TestController 
{ 
    protected final Log log = LogFactory.getLog(getClass()); 

    @RequestMapping("/test") 
    public String methodName(Map<String, Object> map) { 
     map.put("someMessage", "some string here"); 
     return "test"; 
    } 

} 

मेरे jsp दृश्य दिखता है इस तरह:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<title>servlet.com</title> 
</head> 
<body> 
${someMessage} 
</body> 
</html> 

तो, जब मैं jsp देखने, मैं someMessage का मूल्य (यहाँ कुछ स्ट्रिंग) उम्मीद थी, लेकिन मैं केवल प्राप्त निम्नलिखित:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<title>servlet.com</title> 
</head> 
<body> 
${someMessage} 

</body> 
</html> 

जब मैं लॉगिंग क्रैंक, मुझे लगता है कि मेरी someMessage ऑब्जेक्ट मॉडल में किया जा रहा है:

22:21:17,425 DEBUG DispatcherServlet:852 - DispatcherServlet with name 'servlet' determining Last-Modified value for [/servlet/access/test] 
22:21:17,426 DEBUG DefaultAnnotationHandlerMapping:183 - Mapping [/test] to handler '[email protected]' 
22:21:17,426 DEBUG DispatcherServlet:868 - Last-Modified value for [/servlet/access/test] is: -1 
22:21:17,426 DEBUG DispatcherServlet:700 - DispatcherServlet with name 'servlet' processing GET request for [/servlet/access/test] 
22:21:17,427 DEBUG HandlerMethodInvoker:158 - Invoking request handler method: public java.lang.String com.servlet.web.TestController.methodName(java.util.Map) 
22:21:17,427 DEBUG DispatcherServlet:1070 - Rendering view [org.springframework.web.servlet.view.JstlView: name 'test'; URL [/WEB-INF/jsp/test.jsp]] in DispatcherServlet with name 'servlet' 
22:21:17,427 DEBUG JstlView:328 - Added model object 'someMessage' of type [java.lang.String] to request in view with name 'test' 
22:21:17,428 DEBUG JstlView:237 - Forwarding to resource [/WEB-INF/jsp/test.jsp] in InternalResourceView 'test' 
22:21:17,429 DEBUG DispatcherServlet:666 - Successfully completed request 

जाहिर है, मेरे विचार सही ढंग से मैप किया गया है, लेकिन मैं यह कर सकते हैं ' टी दृश्य में अनुरोध में जोड़े गए मॉडल ऑब्जेक्ट्स तक पहुंचने लगते हैं। मैंने अतीत में कई बार स्प्रिंग एमवीसी के साथ इस तरह की चीज की है, लेकिन मुझे यहां कुछ स्पष्ट याद आना चाहिए। कोई विचार? धन्यवाद।

+0

क्या आप अपना वेब.एक्सएमएल प्रदान कर सकते हैं? और आपका पूरा सर्वलेट-servlet.xml ?? मैंने आपके नियंत्रक को मेरी तरफ एक ही दृश्य के साथ परीक्षण किया है और इसे ठीक से प्रस्तुत किया जाता है। – rochb

उत्तर

13

क्या आप सुनिश्चित हैं कि आपके जेएसपी में ईएल का मूल्यांकन सक्षम है? मुझे कभी-कभी समस्या थी, कि यह किसी भी तरह से बदल गया। ${'test'} जैसी सरल अभिव्यक्ति का मूल्यांकन करने का प्रयास करें और देखें कि 'परीक्षण' प्रकट होता है या नहीं।

यदि आप ईएल को अक्षम किया जाना चाहिए तो आप पेज निर्देशों या कुछ और के साथ इसे सक्षम करने का प्रयास भी कर सकते हैं।

<%@ page isScriptingEnabled="true" isELIgnored="false" %> //of course it has to be FALSE 

(माफ करना, मैं इस 100% सही है। यह हो सकता है 'isELEnabled' याद नहीं कर सकते)

+2

अच्छा! मेरे जेएसपी के शीर्ष पर <% @ पृष्ठ जोड़ना है IELIgnored = "false"%> मेरी समस्या को ठीक किया गया है। मुझे यकीन नहीं है कि ईएल को अक्षम करने के लिए क्या हो रहा है। ओह, isScriptingEnabled प्रॉपर्टी समेत जेएसपी तोड़ने लगता है, इसलिए मैंने इसे हटा दिया। ऐसा लगता है कि isScriptingEnabled संपत्ति वैध पूर्व जेएसपी 2.0 था? तो, सारांश में कहा <% @ पेज isELIgnored = "false"%> मेरे jsp करने के लिए समस्या का समाधान हो। धन्यवाद, मोक्सन – labratmatt

+1

आपका स्वागत है। मुझे पूरा यकीन है कि web.xml में इसे कॉन्फ़िगर करने का कोई तरीका है। [इस] [1] के अनुसार आप अपने सभी जेएसपी के लिए ईएल को सक्षम करने के लिए अपने web.xml पर कॉन्फ़िगरेशन जोड़ सकते हैं। [1] http://www.theserverside.com/discussions/thread.tss?thread_id=44097 – moxn

1

मैंने स्प्रिंग एमवीसी के साथ जितनी अधिक एनोटेशन कॉन्फ़िगरेशन का उपयोग नहीं किया है, इसलिए मुझे आपके सेटअप के साथ स्वचालित रूप से सभी चीजों के बारे में सुनिश्चित नहीं है। मेरा एकमात्र विचार यह है: विधि पैरामीटर मॉडलमैप ऑब्जेक्ट होना चाहिए? मैंने पहले जो उदाहरण देखा है, वे पैरामीटर प्रकार के रूप में मॉडलमैप का उपयोग करते हैं। इस पृष्ठ की धारा 13.11.3 उनमें से एक है: http://static.springsource.org/spring/docs/2.5.6/reference/mvc.html

जैसा कि मैंने कहा, मैंने पहले इस प्रकार के ऑटो-कॉन्फ़िगरेशन का उपयोग नहीं किया है - मैं इसे थोड़ा अधिक मैन्युअल रूप से करता हूं, और अपने नियंत्रकों को एक सार नियंत्रक या सरलफॉर्म नियंत्रक जैसे कुछ से बढ़ाता हूं।

+0

उस समय के लिए धन्यवाद। मैंने मॉडलमैप का उपयोग करने का प्रयास किया है और इसका एक ही परिणाम था। – labratmatt

4

मैं एक ही समस्या में पड़ गए, और ईएल काम कर के साथ 2 जैसा ऐप्लिकेशन (एक तुलना करने के बाद ठीक है और दूसरा नहीं), ध्यान दिया कि मेरे टोमकैट 7 की समस्या वेबपैक्स संस्करण पर निर्भर है जो एप्लिकेशन के web.xml में निर्दिष्ट है।

वेब ऐप 2.3 का उपयोग कर एक ही जेएसपी $ {someMessage} प्रदर्शित करता है। (बीटीडब्लू, यह वही है जो आप मेवेन आर्केटाइप का उपयोग करते हैं: archetypeArtifactId = maven-archetype-webapp के साथ उत्पन्न करें)।

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
... 

ही jsp वेब एप्लिकेशन 2.4 ठीक से प्रदर्शित मॉडल वस्तु का उपयोग कर:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="webapp-id" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
... 

आशा है कि यह मदद करता है!