2009-10-28 5 views
10

Ich versuche, eine Java-Variable aus einem benutzerdefinierten JSP-Tag übergeben (Im hier Struts2 verwenden, um die Variable aus der Java-Klasse zu erhalten). Hier ist der Fehler, den ich bekomme.Übergabe eines Java-Objektwerts in Custom JSP-Tag

javax.servlet.ServletException: /pages/editBidForm.jsp(51,8) According to TLD or attribute directive in tag file, attribute parentId does not accept any expressions 
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515) 
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) 
    .... 

Hier ist meine jsp Seite (Teil)

<%@ taglib prefix="s" uri="/struts-tags" %> 
<%@ taglib uri="/WEB-INF/taglib.tld" prefix="custom" %> 
... 
... 
<table> 
      <tr> 
      <% 

     String bidformoid=null; 
     bidFormOid=request.getParameter("bidFormOid"); 
     %> 

      <td> <custom:zorancustomtag parentType = "BIDFORM" parentId = "<%= pageContext.getAttribute("bidFormOid") %>" /></td> 


      </tr> 
     </table> 

ich nicht in der Lage bin richtig parentId Parameter zu übergeben. Ich konnte den Parameter parentType korrekt übergeben, da nur die Zeichenfolge übergeben wurde

Hier ist die Taglib-Datei.

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag 
Library 1.2//EN" 
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> 
<taglib> 
     <tlibversion>1.0</tlibversion> 
     <jspversion>1.1</jspversion> 
     <shortname>custom</shortname> 
    <tag> 
     <name>zorancustomtag</name> 
     <tagclass>com.zoran.action.CustomizedTag</tagclass> 
     <bodycontent>JSP</bodycontent> 
     <info>Tag having a body and attributes</info> 
     <attribute> 
     <name>name</name> 
     <required>false</required> 
     <rtexpvalue>false</rtexpvalue> 
     </attribute> 

     <attribute> 
     <name>parentType</name> 
     <required>true</required> 
     <rtexpvalue>true</rtexpvalue> 
     </attribute> 

     <attribute> 
     <name>parentId</name> 
     <required>true</required> 
     <rtexpvalue>false</rtexpvalue> 
     </attribute> 



    </tag> 

</taglib> 

Und die Java-Klasse des benutzerdefinierten Tags.

Kann mir bitte jemand sagen, wie man eine Java-Variable durch benutzerdefinierte JSP-Tag übergeben.

Danke, Aditya

Antwort

13

Das <rtexpvalue> Element in Ihrem TLD <rtexprvalue> sein soll und muss true gesetzt werden:

<attribute> 
    <name>parentId</name> 
    <required>true</required> 
    <rtexprvalue>true</rtexprvalue> 
    </attribute> 

Dies ermöglicht Runtime-Ausdrücke als Attributwert geliefert werden. Ich bin immer noch verwirrt darüber, wer im JSP-Designteam dachte, es sei eine gute Idee, dies auf false zu setzen.

+0

Danke für die Antwort, aber auch nach dem Attribut auf ‚true‘ Einstellung ich die gleiche Fehlermeldung bekommen. Ist der benutzerdefinierte JSP-Tag mit dem Attribut korrekt? –

+4

Es gab einen Tippfehler (der auch in OPs Post vorhanden ist), es sollte "rtexprvalue" anstelle von "rtexpvalue" sein. Ich habe die Antwort aktualisiert. – BalusC

+0

Das war genau mein Problem - vielen Dank! –

-2

Versuchen Sie, den parentId Wert in $ Einwickeln {}

<custom:zorancustomtag parentType = "BIDFORM" parentId = "${<%= pageContext.getAttribute("bidFormOid") %>}" />