문제

이 질문은 이미 여기에 답이 있습니다.

Tomcat 5.5에서 JSP 페이지가 실행됩니다. 다음 코드가 있습니다.

 <c:forEach var="i" begin="1" end="10" step="1">
  <c:out value="${i}" />
  <br />
</c:forEach>

내가 얻는 출력은 다음과 같습니다.

${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 

Foreach 루프가 작동하는 이유를 해결할 수 없지만 출력이 작동하지 않습니다. 누구든지 줄 수있는 모든 도움은 좋을 것입니다.

도움이 되었습니까?

해결책

나는 그것이 기본적으로 켜져 있어야한다는 것을 알고 있지만 EL 처리가 발생하지 않는 곳에서 몇 번이고 페이지를 가로 질러 실행됩니다 (또는 동작이 변경되는 동일한 페이지). 그러한 페이지의 상단에 다음을 추가하면 문제가 해결 될 것입니다.

<%@ page isELIgnored="false" %> 

나는 그것이 아프지 않기 때문에 모든 페이지에 추가하지만, 때때로 페이지가 El 표현식 해석을 중단하는 근본 원인을 모릅니다.

다른 팁

나는 방금이 같은 문제를 겪었고 무엇이 잘못되었는지 알아 내려고 영원히 보냈습니다.

처음부터 많은 웹 앱을 개발했습니다. 왜 갑자기이 사람이 협력하지 않았습니까?

한 가지 차이점은 이번에는 Maven WebApp 아키타 타입을 사용하여 프로젝트 구조를 생성하는 것입니다. 다음과 같이 보이는 Web.xml 파일을 만들었습니다.

<!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>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

일단 내 문제로 깨달았을 때, 나는 답이 있다고 확신했다. 그래서 2.5 Web.xml 헤더 중 하나를 복사하여 재건하고 재배치했습니다. 시가 없음. 그것이 문제가 아니라고 믿을 수 없었습니다. 프로젝트 청소, Tomcat을 다시 시작했습니다. 아니요.

Rhseeger의 대답은 < %@ page iselignored = "false" %>를 넣도록 시도했습니다. 그것은 문제를 해결했습니다. 그러나 나는 여전히 엘이 왜 처음부터 무시되기 시작했는지 알고 싶었습니다.

나는 web.xml에 문제가 있기 때문에 EL이 무시되고 있다고 생각했기 때문에 잘 작동 한 다른 WebApp의 WebApp의 WebAp.xml과 비교하여 면밀히 검사했습니다. 눈에 띄는 차이가 없습니다.

그런 다음 JSP에서 < %@ page iselignored = "false" %>를 제거하고 EL이 다시 평가되지 않을 것이라고 가정하면, 놀랍게도 EL은 잘 평가되었습니다!

그런 다음 일종의 캐싱 문제가되어야한다고 생각하면 문제를 재현하기 위해 Web.xml의 변경 사항을 확인했습니다. 나는 재배치했지만 여전히 web.xml이 잘못된 EL은 올바르게 평가되고있었습니다. 그런 다음 전체 프로젝트를 정리하여 (폭발 한 배치를 사용하고 있습니다) 폭발 디렉토리를 날려 버리고 다시 만들었습니다. 그런 다음 Tomcat을 다시 시작했습니다. 그럼에도 불구하고 EL은 잘못된 Web.xml에도 불구하고 올바르게 평가되는 것처럼 보였습니다.

마침내 그것은 나에게 새벽이었다. JSP의 어느 곳에 공간을 추가하고, 다시 포장하고, 페이지를 새로 고쳤습니다. 빙고! 이제 EL은 평가를받지 못했습니다.

그래서 문제 ~였다 Web.xml과 함께. JSP가 변경되지 않으면 JSP가 재 컴파일되지 않았다는 사실로 인해 더욱 복잡해 질 것입니다. Tomcat이 MD5 합계를 사용하여 JSP를 다시 컴파일 해야하는지 또는 무엇을 반환 해야하는지 확실하지 않습니다. 또 다른 가능성은 타일을 사용하고 있는데, 캐싱 메커니즘이 있다는 것을 알고 있지만 Tomcat 재시작에서 살아남을 것으로 기대하지는 않습니다.

어쨌든 Web.xml을 수정 한 후 JSP를 수정하지 않으면 EL이 다시 작동하기 시작하는지에 대한 모든 베팅이 꺼져 있습니다. 이것이 다른 사람이 두통을 저장하기를 바랍니다. 또한 JSPS를 재 컴파일하지 않는 것이 JSP 또는 JSP의 출력을 캐싱하지 않는지 여부를 말할 수 있으면 관심이 있습니다. 컴파일 시간에 JSP가 $ {} el 표현식으로 무엇을 해야하는지 알아 내야 할 때이기 때문에 그것이 다시 컴파일이라고 확신합니다. 타일은 실제로 EL 표현으로 대체되는 것을 캐시 할 수 없습니다. 그렇지 않으면 모든 종류의 문제가 발생합니다.

문제를 일으키는 Web.xml의 헤더입니다.

아래에서 Maven이 생성 된 헤더 중지 EL은 평가되지 않습니다.

<!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>

아래 헤더 평가를 사용하여 EL.

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

Web.xml에 관련 네임 스페이스를 포함시켜야합니다. 그냥 교체하려고 노력하십시오

<web-app>

같은 것

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

그것은 나를 위해 그것을 고쳤다. Tomcat 설치와 함께 제공되는 예제 앱에서 Tomcat 인스턴스에 대한 올바른 네임 스페이스를 찾을 수 있습니다.

관심있는 사람들의 경우 JSP 2.0의 동등한 XML 구문은 다음과 같습니다.

<jsp:directive.page isELIgnored="false"/>

Kevin과 비슷한 문제가 있었는데 Maven을 사용하여 WebApp을 시작했지만 JSP의 표현식을 평가하는 데 기쁨은 없었습니다. DocType 헤더를 제거해야했습니다. 모든 것은 iselignored 비트를 가지고 노는없이 이제는 좋았습니다. Maven은 2.3으로 연결되는 web.xml을 생성합니다. Peter가 언급 한 바와 같이 El은 기본적으로 비활성화했습니다

내 대답을 참조하십시오 JavaScript String.replace (/ $/, str) JSP 파일에서 이상하게 작동합니다. 가능한 이유로.

더 긴 답변 : $ {i}는 소위 '표현 언어'에서 표현식입니다. 때로는 표현 언어가 비활성화 될 수 있습니다. 잠재적 인 이유와 활성화 방법은 위의 답변을 참조하십시오.

tomcat6을 사용하십시오. web.xml에서 EL에 대한 구성이 필요하지 않습니다.

컨트롤러에서 :

@RequestMapping(value = "createcustomer",method = RequestMethod.GET)
    public String customer(Model model)
    {
        Customer cus=new Customer();
        cus.setCustomerNumber("Test");
        model.addAttribute("customer",cus);
        return "createcustomer";
    }

보기 :

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 

<div class="cl">    
   <form:form commandName="customer" method="POST">

      <p>Name: <c:out value="${customer.CustomerNumber}"></c:out></p>

   </form:form>
<div>

산출:

Name: Test
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top