Thanks Mike, actually there is a file exist in that location.
HTTP ERROR 404
Problem accessing /WEB-INF/view/jsp/error.jsp. Reason:
NOT_FOUND
Powered by Jetty://
I am getting error like that above and of course I changed few things
according to your comments.
and I found out that this will work when I upload the project to GAE
site.
seems like it only happens in localhost.
On May 18, 12:11 am, "Mike!" <[email protected]> wrote:
> Quick question, do you have "error.jsp" in your /WEB-INF/view/jsp/
> folder? Also, in your first method
> (TestController.testStringResult()) you misspelled "redirect", which
> will also result in 404. Also, take off the leading "/" for the
> testModelAndView() and testString()...you're effectively looking for /
> WEB-INF/view/jsp//error.jsp (which should still resolve, but is not
> necessary and clouds up the code a bit)
>
> Mike!
>
> On May 15, 9:09 pm, jlc488 <[email protected]> wrote:
>
>
>
>
>
>
>
> > I've implemented a site using SpringMVC RESTful approaches. I did not
> > need any view such as JSP or Velocity and stuff at that time.
>
> > For some reason, I needed views using JSPs. Somehow It is showing 404
> > not found on JSPs or any views include HTMLs on Google AppEngine.
>
> > My requirements are
>
> > 1) It should work as RESTful approach which means It returns JSON
> > formats of results according to the request. --> working like charm
>
> > 2) It should be able to show the JSP result pages on such requests
> > like clicking User status confirmation link. --> 404 not found.
>
> > I suspect this would be the ViewResolver problems but I have no clue
> > about which resolver and how to use it properly.
>
> > My configurations are below.
>
> > ----------- start of restTask-servlet.xml -------------
>
> > <context:annotation-config />
> > <bean
> > class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandl
> > erAdapter">
> > <property name="messageConverters">
> > <list>
> > <ref bean="jsonHttpMessageConverter" />
> > <ref bean="stringHttpMessageConverter" />
> > <ref bean="formHttpMessageConverter" />
> > </list>
> > </property>
> > </bean>
>
> > <bean id="jsonHttpMessageConverter"
> > class="org.springframework.http.converter.json.MappingJacksonHttpMessageCon
> > verter"/
>
> > <bean id="stringHttpMessageConverter"
> > class="org.springframework.http.converter.StringHttpMessageConverter" /
>
> > <bean id="formHttpMessageConverter"
> > class="org.springframework.http.converter.FormHttpMessageConverter" />
>
> > <bean
> > class="com.otuls.task.view.json.MyContentNegotiatingViewResolver">
> > <property name="mediaTypes">
> > <map>
> > <entry key="html" value="text/html" />
> > <entry key="text" value="text/plain" />
> > <entry key="json" value="application/json" />
> > </map>
> > </property>
> > <property name="defaultContentType" value="application/json" />
> > <property name="defaultViews">
> > <list>
> > <bean class="com.otuls.task.view.json.JsonView" />
> > </list>
> > </property>
> > </bean>
>
> > <bean
>
> > class="org.springframework.web.servlet.view.InternalResourceViewResolver">
> > <property name="order" value="2" />
> > <property name="prefix" value="/WEB-INF/view/jsp/" />
> > <property name="suffix" value=".jsp" />
> > </bean>
> > ------------- end of restTask-servlet.xml -------------------
>
> > ------------- start of JsonView Class -------------------
>
> > public class JsonView extends AbstractView{
>
> > public static final String DEFAULT_CONTENT_TYPE =
> > "application/json";
>
> > private ObjectMapper objectMapper = new ObjectMapper();
>
> > private JsonEncoding encoding = JsonEncoding.UTF8;
>
> > private boolean prefixJson = false;
>
> > private Set<String> renderedAttributes;
>
> > public JsonView() {
> > setContentType(DEFAULT_CONTENT_TYPE);
> > }
>
> > public void setObjectMapper(ObjectMapper objectMapper) {
> > Assert.notNull(objectMapper, "'objectMapper' must not be
> > null");
> > this.objectMapper = objectMapper;
> > }
>
> > public void setEncoding(JsonEncoding encoding) {
> > Assert.notNull(encoding, "'encoding' must not be null");
> > this.encoding = encoding;
> > }
>
> > public void setPrefixJson(boolean prefixJson) {
> > this.prefixJson = prefixJson;
> > }
>
> > /**
> > * Sets the attributes in the model that should be rendered by this
> > view. When set, all other model attributes will be
> > * ignored.
> > */
> > public void setRenderedAttributes(Set<String> renderedAttributes) {
> > this.renderedAttributes = renderedAttributes;
> > }
>
> > @Override
> > protected void prepareResponse(HttpServletRequest request,
> > HttpServletResponse response) {
> > response.setContentType(getContentType());
> > response.setCharacterEncoding(encoding.getJavaName());
> > }
>
> > @Override
> > protected void renderMergedOutputModel(Map<String, Object> model,
> > HttpServletRequest request,
> > HttpServletResponse response) throws Exception {
> > model = filterModel(model);
> > JsonGenerator generator =
> > objectMapper.getJsonFactory().createJsonGenerator(response.getWriter());
> > if (prefixJson) {
> > generator.writeRaw("{} && ");
> > }
> > objectMapper.writeValue(generator, model);
> > }
>
> > /**
> > * Filters out undesired attributes from the given model.
> > *
> > * <p>Default implementation removes {@link BindingResult} instances
> > and entries not included in the {@link
> > * #setRenderedAttributes(Set) renderedAttributes} property.
> > */
> > protected Map<String, Object> filterModel(Map<String, Object> model)
> > {
> > Map<String, Object> result = new HashMap<String,
> > Object>(model.size());
> > Set<String> renderedAttributes = !
> > org.springframework.util.CollectionUtils.isEmpty(this.renderedAttributes) ?
> > this.renderedAttributes : model.keySet();
> > for (Map.Entry<String, Object> entry : model.entrySet()) {
> > if (!(entry.getValue() instanceof BindingResult) &&
> > renderedAttributes.contains(entry.getKey())) {
> > result.put(entry.getKey(),
> > entry.getValue());
> > }
> > }
> > return result;
> > }
>
> > }
>
> > ------------------ end of JsonView class -----------------------
>
> > ------------------ start of MyContentNegotiatingViewResolver
> > ------------------------
>
> > public class MyContentNegotiatingViewResolver extends
> > ContentNegotiatingViewResolver {
>
> > @Override
> > protected List<MediaType> getMediaTypes(HttpServletRequest request)
> > {
> > List<MediaType> result = super.getMediaTypes(request);
> > if (result.size() == 1)
> > result = Arrays.asList(result.get(0));
> > return result;
> > }}
>
> > ---------------------- end of MyContentNegotiatingViewResolver
> > --------------------------
>
> > ----------------------- start of web.xml ---------------------------
>
> > <context-param>
> > <param-name>log4jConfigLocation</param-name>
> > <param-value>/WEB-INF/log4j.properties</param-value>
> > </context-param>
> > <context-param>
> > <param-name>contextConfigLocation</param-name>
> > <param-value>
> > /WEB-INF/restTask-servlet.xml
> > /WEB-INF/classes/com/otuls/task/common/config/
> > applicationContext.xml
> >
> > /WEB-INF/classes/com/otuls/task/common/config/aop.xml
> >
> > /WEB-INF/classes/com/otuls/task/common/config/controller.xml
> >
> > /WEB-INF/classes/com/otuls/task/common/config/service.xml
> >
> > /WEB-INF/classes/com/otuls/task/common/config/persistence.xml
> > </param-value>
> > </context-param>
>
> > <listener>
> >
> > <listener-class>org.springframework.web.util.Log4jConfigListener</
> > listener-class>
> > </listener>
>
> > <listener>
> > <listener-
> > class>org.springframework.web.context.ContextLoaderListener</listener-
> > class>
> > </listener>
>
> > <servlet>
> > <servlet-name>restTask</servlet-name>
> >
> > <servlet-class>org.springframework.web.servlet.DispatcherServlet</
> > servlet-class>
> > <init-param>
> > <param-name>contextConfigLocation</param-name>
> > <param-value>
> > /WEB-INF/restTask-servlet.xml
> >
> > /WEB-INF/classes/com/otuls/task/common/config/
> > applicationContext.xml
> > ...
>
> read more »
--
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.