2009-07-08 3 views
3

jstl 태그 안에 태그가 잘못된 양식으로 간주됩니까? 그래서 예를 들어, 다음은 작동하지만 그것은 JSP로 내 jstl 태그 안에 스크립트 태그를 가지고 나쁜 형태로 간주됩니다 알지?JSTL 및 Javascript

<c:choose> 
    <c:when test="${!empty bean.value}"> 
    <p>Its not empty</p> 
    </c:when> 
    <c:otherwise> 
    **<script> 
     callJSSomeFunction(); 
    </script>** 
    </c:otherwise> 
</c:choose> 

답변

4

나는 약 나쁜 형태 (거친 조금) 모르지만 당신은 JS하지 않고 페이지를 보는 사람에게 것을 고려해 볼 수 있습니다 귀하의 <c:otherwise> 것이다 효과적으로 출력 아무것도 가능하지, 그것은 매우 우아한 아니에요.

페이지가 점진적으로 렌더링되면 함수 호출은 실행 중일 때 실행될 수 있으며 DOM이 브라우저에 의해 완전히로드되기 전에 예측할 수 없게 동작합니다 (또는 전혀 작동하지 않습니다. 이것은 일어난다).

머리에 모든 함수 호출을 넣고 DOM이로드 될 때 감지하여 사용할 수있는 유용한 트릭 중 하나를 사용하여 더 명확한 구분을 적용하고 훨씬 쉽습니다.

2

난 그렇게 생각하지 않는다 - 이것은 당신이 조건부 JSTL에서 일을하는 방법, 당신이 하나를 가지고 스크립트 태그를한다고 생각하지 않습니다이다.

1

지금 나는 펀치 보우 (punchbowl)에서 거대한 거대 JSTL 테르들 (terds)을 다루고 있기 때문에 믹스에 UI 개발자 관점을 던질 것이라고 생각했습니다.

SGM과 유사한 구문의 다른 도메인을 래핑하는 SGM 유사 구문은 끔찍한 형식이지만 일반적으로 사용자의 잘못이 아닙니다. 그러나 분리 된 상태로 유지하면 더 나아질 수 있습니다. 이것은 항상 가능하지는 않지만 vars를 설정하고 필요한 경우에만 HTML로 드롭 할 수 있습니다.

또 다른 문제는 클라이언트 측 스크립트를 서버 측 코드로 직접 설정하려고한다는 것이고 5 년 동안의 UI 코드 처리 경험을 감안할 때 그렇다고 대답 할 것입니다. 이는 거대한 거대한 PITA입니다. 귀하의 UI 사람들이 갑자기 트리거에 빠지게되면 그들은 어떻게 원점으로 되돌아 가야하는지 모르고 어떤 통제도하지 않습니다. 지옥, Java devs조차도 충분히 추악한 경우 원점으로 되돌아 가도록하는 방법을 반드시 확신하지 못합니다.

우리 신발에 있다고 상상해보십시오. 서비스 지향 아키텍쳐를 사용하지만 자바 문자열을 param mix에 추가하면 클라이언트 측에서 객체 메소드 호출을 실제로 만들 수 있습니다. 그거 좋은 생각이야? 아니, 그건 끔찍한 생각이야. JavaScript 개발자가 Java를 작성하는 것을 원하지 않기 때문에 (그렇게하지 않으면 우리를 정말 불쾌하게 만듭니다.) 분리의 두 지점에서 가능한 한 간단해야하기 때문이 아닙니다. 나는 당신에게 데이터를 보내지 만 당신이 원하는대로 다룰 수 있습니다.

이미 데이터를 입력하십시오. JSON 형식에서 이상적이지만 JS 실행이 서버에 의해 결정되는 것을 막기 위해 무엇이든 사용할 것입니다. 당신이 원하는 마지막 것은 당신의 OOP- 살인 - 콩 채워진 목초지에서 UI 발굽의 우표입니다. 그래서 아무런 이유없이 HTTP 벽의 양쪽에있는 점들 사이에 뚜껑이 꽉 끼어있는 것을 찾는 것을 강요하지 마십시오. 이제까지 나에게 좋은 감각을 만들었다. 우리는 바위 주변의 메시지를 감싸고 벽에 붙입니다. 그것은 우아하지 않지만 내 경험에서 "씬 클라이언트"솔루션은 고통을 덜 일으켰습니다.

"ick"본능을 신뢰하십시오. 때로는 틀렸을 수도 있지만 아침에 샤워 할 때 샤워를 생각할 때 대개 그들이 옳다고 생각해야합니다.