2012-11-21 2 views
14

다른 JSP 파일을 포함하는 JSP 파일이 있습니다. 첫 번째 JSP는 Java 클래스 (위젯)의 인스턴스를 두 번째 JSP 파일로 전달해야합니다.jsp : param with Java class

첫 번째 JSP :

<jsp:include page="/container/SpecialWidget.jsp"> 
    <jsp:param name="widget" value="${widget}"/> // widget is a .Java POJO 
</jsp:include> 

두 번째 JSP :

내가 가진 무엇

${param.widget.id} 

문제는이 코드는 오류 (그것이 아무튼 말한다을 제공한다는 것입니다 ID를 모른다). ".id"부분을 생략하면 페이지가 Java 클래스의 Java 코드를 인쇄합니다. 이는 클래스가 올바르게 전송되었음을 의미합니다. 예를 들어 $ {widget.id}에서 첫 페이지의 $ {widget} 규칙을 변경하고 $ {param.widget}을 인쇄하려고하면 모든 것이 잘됩니다.

내 질문 : Java 클래스를 전달하고 속성을 직접 호출 할 수없는 이유는 무엇입니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 : 오류 메시지 : javax.el.PropertyNotFoundException :에 의한는 java.lang.String 형에없는 속성 'ID는'

답변

9

당신이 통과 변수 ${widget}은 요청시 문자열 (widget.toString())로 변환됩니다. 이 값은 원래 Java 객체가 아닌 String으로 두 번째 JSP로 전달됩니다. 객체의 값에 액세스 할 수

한 가지 방법은 속성의 값으로 매개 변수의 값을 설정하는 것입니다 :

${param.widgetId} 

또한 위젯을 설정할 수 있습니다

<jsp:param name="widgetId" value="${widget.id}"/> 

그런 다음 두 번째 JSP에 코드를 넣고를 사용 속성으로 요청하고 두 번째 페이지에서 ${widget.id} 또는 $ {request.widget.id}로 사용하십시오. 두 번째 방법을 사용하는 것이 좋습니다. :)

<c:set var="widget" value="${widget}" scope="request" /> 
<jsp:include page="/SOMEWHERE/SpecialWidget.jsp"/> 

이 도와 주셔서 모두 감사는 당신의 도움이 내 일

+0

서블릿을 사용하여 요청 매개 변수를 설정하는 방법을 알고 있습니다. 이 매개 변수를 포함 된 파일로 전달하는 방법을 모르겠습니다. 이것이 어떻게 성취 될 수 있는지 설명해 주시겠습니까? –

6

<jsp:param> 만이 될 수있는 HTTP 요청 매개 변수로 매개 변수를 전달 끈. 따라서 toString()이 위젯에서 호출되고이 메소드의 결과가 매개 변수로 전달됩니다.

JSP 포함을 사용하는 대신 태그 파일로 구현 된 JSP 태그를 사용해야합니다. 사용법을 정의하는 방법은 http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html을 참조하십시오. 어떤 JSP에서

<%@ tag %> 
<%@ attribute name="widget" required="true" type="the.fully.qualified.name.of.WidgetClass" %> 
TODO: add the HTML markup that must be displayed, using ${widget} to access the passed in widget attribute 

태그 사용 : :

예를 들어

태그 definintion, /WEB-INF/tags/specialWidget.tag에서

<%@ taglib prefix="myTags" tagdir="/WEB-INF/tags" %> 
... 
Tada! I will use the specialWidget tag here, with widget as an attribute: 
<myTags:specialWidget widget="${widget}"/> 
+0

감사를 저장 : –

+0

예를 보려면 내 편집을 참조하십시오. –

10

나는 다음 코드를 사용하여 내 문제를 해결하기 위해 관리. 어떻게 작동하는지에 대한 기본적인 예를 들려 줄 수 있습니까?보내 주신 링크를 연구 한 후 내 문제에 대해 어떻게 사용할 수 있는지 명확하지 않습니다.
+0

나를 도울 수있는 속임수는 scope = "request" – jeff