JSP tags as object constructors?
Hi,
I want to instantiate an object in a tag handler and then use the object in my JSP code. For example:
<objConstructor varName="myObj" field1="foo" field2="bar" />
<%
out.println(myObj.getField1() + " " + myObj.getField2());
%>
Is there an elegant way to do this in JSP, or is there a more appropriate way? I want to allow non-programmers to edit the stuff.
Thanks,
Greg
Sure, you just need to add a TEI class for your tag. So if your tag class is named ObjConstructor.java, you'd need a class called ObjConstructorTEI.java that looks something like this:
import javax.servlet.jsp.tagext.*;
public class ObjConstructorTEI extends TagExtraInfo
public VariableInfo[] getVariableInfo(TagData data)
VariableInfo info1 = new VariableInfo(data.getAttributeString("id"),"class.name.for.the.object", true, VariableInfo.AT_BEGIN);
VariableInfo[] info = { info1 } ;
return info;
}Note: I changed your varName to id in this example, just to follow the convention used by other tags like jsp:useBean.
I copied it from a tag I wrote a while back, so I don't remember the specifics of the VariableInfo API, but since you're using it the same way as I did, it should work.
Similar Messages
-
F:invokeUrl jsp tag and child objects
Hey all,
Does anyone know if its possible to use the f:invokeUrl tag on a method in a child object? eg:
<f:invokeUrl var="myObject.myChildObject" methodName="myMethod" />
I've also tried:
<f:invokeUrl var="${myObject.myChildObject}" methodName="myMethod" />
with no luck. I've gotten the above to work using the f:invoke jsp tag.
What I'm trying to do is put my ajax type functions in the objects that make the most sense. If I can't get this to work, I'll need to make presentation objects with all my ajax functions, create an instance and put it into scope, which I rather not do.
Thanks,
GrahamGraham,
I can't say if it will work or not, because its a better practice to leave all logic outside of the jsp (and I really don't know!). Do the logic in an activity, then only use the jsp to display the values. Keeping the logic outside is a much easier way to keep track of the data, and also re-use if necessary.
Customarily, a 'view' object is created. FileStatusView for example, would be a BPM Object that contains all the values to be displayed in a JSP or presentation.
Hope thats helpful!
-Kevin -
Object passing to weblogic JSP tags
Hello everyone
I was wondering if I can pass a java object to a weblogic jsp tag
for example if I select a content object with id "newsItem"
<cm:selectbyid contenthome="com.beasys.commerce.axiom.document.Document"
contentid="<%= contentId %>"
id="newsItem" />
can I pass newsItem as a variable to the next tag
i.e. instead of writing it
<cm:printdoc id="newsItem" />
I write it
<cm:printdoc Id="<%= newsItem %>" />
This results in an compiler error if the object is passed to Id that is
waiting for a content instance, while if it is passed to contentid (as in
the first
script) then it works fine, as this is waiting for a string.
Is it possible to pass an object to the "id" in the jsp script, and if not,
is there a work around it that enables the content selection logic to be
seperated from the display.
Thank you
May
Oh...i put quotes around the values and that fixed it.
<%@ page language="java" session="false" %>
Happy Holidays,
Brian
"Brian Williams" <[email protected]> wrote in message
news:[email protected]..
> Hello,
>
> I have a JSP that does something strange: When I look
> at it under Explorer it looks fine but under Netscape
> it has this at the top of the page:
>
> <%@ page language=java session=false %>
>
> Actually, with Explorer you can see it in the view
> source. What's up with Weblogic? It seems that
> it failed to parse this JSP tag.
>
> Thanks,
> Brian
>
>
>
-
Problems in developing custom JSP tags
I have problems in debugging custom JSP tags. Sometimes the doStartTag is not called on tags but the doEndTag is called. I don't know why.
Thanks.Fahr--
A word of caution -- NetUI did not ship a JSP tag SDK in 8.x, and
we're making no compatibility guarantees for custom JSP tags written on
the 8.x release and future releases.
You can accomplish the same sort of functionality with a combination
of the <netui-data:getData> tag and JSTL 1.0. This solution would
probably provide similar functionality and be more future-proof relative
to JSTL and the NetUI tags currently being developed in Beehive.
Hope that helps.
Eddie
Fahr Vegnugen wrote:
We are in the midst of creating our own JSP tags to work with datasources.
In an example where you would need to compare two different datasources how would you do this?
ie.
<prefix:isGreater dataSource="{pageflow.column1}" dataSourceToCompare="{pageFlow.column2}" />
How would I evaluate what column2 is since the tag will only resolve one data source
this.evaluateDataSource();
Any pointers you can provide would be appreciated, or if there is a library of jsp tags that evaluate objects using datasources already created, that would even be better. -
We are researching JSP Tags as a method of seperating our creative and coding efforts. Our research is showing that JSP tags is a resource hog and noticed that none of the JSP Tags are being pooled. Docs that we have looked at suggest that pooling does occur, but we do not see it happening. Is anyone using this technology and if so how is the performance?
Cameron,
In general, what kind of "interesting bugs" and "design flaws" do you mean?
I would expect that using any kind of cache can allow for bugs due to developers
confusion... but are there inherent "bugs" (or design flaws) that are built into
WL's Cache tag?
Jack Lin
Cameron Purdy wrote:
> Install the latest SP. They are (relatively speaking) resource intensive.
> However, properly implemented/used, this relative cost is close to 0.
> (Instantiating a Java class and calling a few empty methods uses a couple
> hundred clock cycles on a good JVM.) BTW Pooling is considerably more
> expensive for simple objects than instantiating new ones. Also, due to
> design flaws in the custom tag API, pooling JSP tags could lead to some
> interesting bugs related to the lack of re-initialization.
>
> --
>
> Cameron Purdy
> [email protected]
> http://www.tangosol.com
> WebLogic Consulting Available
>
> "Anthony Raiti" <[email protected]> wrote in message
> news:39d4a35f$[email protected]..
> We are researching JSP Tags as a method of seperating our creative and
> coding efforts. Our research is showing that JSP tags is a resource hog and
> noticed that none of the JSP Tags are being pooled. Docs that we have looked
> at suggest that pooling does occur, but we do not see it happening. Is
> anyone using this technology and if so how is the performance?
-
We have our own custom JSP tag libraries (some of them extend the Struts tags, but many do not) and want those to render correctly in the design view.
Is that supported by NitroX Struts, or will it only work with built-in Struts tags?
If it is supported, how does one get NitroX to run the custom tags?It is possible to customize many aspects of the rendering of a custom tag. This is done using a combination of an M7 specific metadata, and standard css rules.
For example, you can change the label, icon and border of a custom tag by doing the following steps:
1) Create a folder named "nitrox" where your tld file is located. For example if you have "/WEB-INF/app.tld" then create a
folder "/WEB-INF/nitrox/".
2) In the nitrox folder created above, create a file named "app.tlei" (for Tag Library Extra Information). The file name used here should match the name of the tld file. In this case "app".
3) Paste the following content in the app.tlei file:
<taglib-extrainfo>
<css-uri>app.css</css-uri> <!-- an optional css file relative to this tlei file -->
<tag name="myTag">
<display-name>My Tag</display-name> <!-- The name displayed in the Tag Libraries view -->
<rendering-label>{tag-name} ({name})</rendering-label> <!-- This will display the value of the "name" attribute in addition to the tag name in the tag view in the JSP design editor. -->
<small-icon>images/myTag.gif</small-icon> <!-- The image uri relative to this tlei file. This is used in the Tag Libraries view and in the JSP design editor.-->
</tag>
</taglib-extrainfo>
All customization tags are optional.
4) Create the css file referenced from the tlei file above (in this example app.css in the same directory containing the tlei file).
5) Paste the following content in the app.css file:
myTag {border: 1 solid red; display: "inline"}
This will render the tag as inline (i.e as one graphical object) even if the tag has nested content.
In addition, you can use any standard css style property.
You can customize other tags in the same fashion.
If a custom tag inherits from a Struts tag, then the tag can inherit the full built-in tag customization as shown in the following example:
Suppose you have a tag named "myText" that extends the Struts html:text form field tag. To inherit the NitroX html:text customization you follow the steps:
1) insert the following in the tlei file described above:
<tag name="myText">
<inherit taglib-uid="http://jakarta.apache.org/struts/tags-html" tag-name="text" />
</tag>
2) Insert the following css rule in the css file referenced from the tlei file:
myText {m7-inherit: "input-text"; display: inline}
This will inherit the built-in css style for form text fields.
Likewise, you can inherit the other Struts tags css styles by using the following rules:
myPassword {m7-inherit: "input-password"; display: inline}
myCancel {m7-inherit: "input-submit"; display: inline}
myCheckbox {m7-inherit: "input-checkbox"; display: inline}
myRadio {m7-inherit: "input-radio"; display: inline}
mySelect {m7-inherit: "select"; display: inline}
myTextarea {m7-inherit: "textarea"; display: inline}
3) The inherited tag library file (in this example the struts-html.tld), must also be present under the WEB-INF directory.
M7 Support -
Javazoom UploadBean - using UploadBean properties within jsp tags
I am working on a jsp web application and integrating the UploadBean from javazoom.net into it. I am using a MySQL database to capture all informaion about mp3 files being uploaded - filename, date, filetype, etc.
Can someone guide me as to whether it is possible to reference the properties of the UploadFile class within a jsp tag?
What I am trying to do is this - I want to capture the filename of the file I upload and store it in a MySQL database. Within the SimpleUpload.jsp page, the filename is accessed within scriplet code as follows:
file.getFileName();
(Where file is a variable representing an instance of the UploadFile class, and getFileName() is a method in this class that returns the file name you are uploading).
What I would like to do is use this method so that this same filename can be used in a a sql:update tag to populate a database with the filename and with the other details of the file which is uploaded.
Can anyone advise as to if this is possible and how? I tried to create a sql:update statement to populate the database with the result of file.getFileName();
The problem is that the sql:update jsp tag can't see the file.getFileName() object and method - it doesn't know about this object and method.
Thanks!I'd still appreciate an answer to this if anyone can help.
Thanks. -
Is there any ways to place JSP tags into Velocity templates? I've seen Velocity can be embed into JSP but i'm not sure if vice versa?
Cameron,
In general, what kind of "interesting bugs" and "design flaws" do you mean?
I would expect that using any kind of cache can allow for bugs due to developers
confusion... but are there inherent "bugs" (or design flaws) that are built into
WL's Cache tag?
Jack Lin
Cameron Purdy wrote:
> Install the latest SP. They are (relatively speaking) resource intensive.
> However, properly implemented/used, this relative cost is close to 0.
> (Instantiating a Java class and calling a few empty methods uses a couple
> hundred clock cycles on a good JVM.) BTW Pooling is considerably more
> expensive for simple objects than instantiating new ones. Also, due to
> design flaws in the custom tag API, pooling JSP tags could lead to some
> interesting bugs related to the lack of re-initialization.
>
> --
>
> Cameron Purdy
> [email protected]
> http://www.tangosol.com
> WebLogic Consulting Available
>
> "Anthony Raiti" <[email protected]> wrote in message
> news:39d4a35f$[email protected]..
> We are researching JSP Tags as a method of seperating our creative and
> coding efforts. Our research is showing that JSP tags is a resource hog and
> noticed that none of the JSP Tags are being pooled. Docs that we have looked
> at suggest that pooling does occur, but we do not see it happening. Is
> anyone using this technology and if so how is the performance?
-
Hi,
is it safe to have member variables in jsp tag? every time service method will create new instance of tag?Thanksis it safe to have member variables in jsp tag? The answer is yes, but.
every time service method will create new instance of tag?no, it will not necessarily create a new instance every time.
For most tags I believe the spec allows for a 'pool' of tag handlers to be retained.
Certainly I have seen this happen in tomcat.
An exception is the JSP2.0 SimpleTagHandler which guaruntees that it will be used once and then thrown away.
With other tags, you have ownership of the tag and its member variables, between doStartTag and doEndTag. Nothing else can interfere with the member variables.
However if you include the tag twice in your page, one after another, it is quite possible, that you will be given the same tag object, and thus the member variables might have variables set from the previous use of the tag.
It is fairly easy to work around though
in the doStart: init any member variables that are not defined by attributes to be their default values
in the doEnd method, clean up your member variables. Clear any attribute values that might be optional. Set things to null. That way you are guarunteed that if the tag is reused, it won't pick up any data from your run through here.
But don't take my word for it :-) Try it out.
Hope this helps,
evnafets -
Assiginment to varaibles from jsp tags
is it possible and how is it possible to assign something from jsp tag to an variable declared in scriptlet code - ie. - as below.
also is there a good resource for jsp info - a comprehensive lookup on jsp syntax egs on the web that any one is aware of. - thanks.
i 'm doing - can i use this variable as in below scrpitlet code :
<%! List myAbridgments = new ArrayList(); %>
then - Also at this stage it get a ClassCastException - why would i get that here i dont use this variable - results anywhere else - except in setting the session attribute in the original servlet that calls this jsp page
<jsp:useBean id="results" class="com.bt.ros.Results" scope="session">
<jsp:setProperty name="results" property="*"/>
</jsp:useBean>
the in some scrpitlet code doing:
<% myAbridgments = results.getAbridgments();
for (int i = 0; i < myAbridgments.size(); i++) {
abridgment = (Abridgment) myAbridgments.get(i);
//out.println(abridgment.geta_volume_id());
%>
<p><input type="checkbox" name="list" value="ON"><span style="font-size:12pt"><jsp:getProperty name="abridgment" property="a_sub_year_volume"/></span><span style="font-size:12pt">,
<a href="abridgment_link.htm"><jsp:getProperty name="abridgment" property="a_volume_id"/></a>, </span>yeah, but this doesn't really help me. I am trying (really hard!) to ensure my JSP's don't really contain any "code" as such, just JSP tags.
The end result I want is to include one JSP in another. Now, I "could" just use a <jsp:include.., the problem is that the path to the file I want to include is tied up in an object which I have previously placed in the ServletRequest object. Again, I "could" extract this in the "parent" jsp, and pass it dynamically to the jsp:include, but I don't want any actual Java "code" in the JSP. (There IS a good reason for this, so I can't really comprimise).
The fact that the IS a pageContext.include() method tells me that I can use it. I must be doing something wrong though.
Thanks anyway. -
Experiences developing iViews with JSP tags
Hi,
has anyone experiences in the development of iViews using JSPs and the JSP tags ? Especially the useBean tag... I think it should be no problem to store beans in the session. If I want to share the bean among iView is it enought to synchronized each method of the bean ?
ThanksHi O.,
please, before going on guessing around what synchronization means, read some tutorial, that's what the link was thaught for. It is no problem at all not to know this topic, it's definitely some more advanced topic within the language, but it doesn't help if you don't know it to guess how it <i>could</i> work/behave.
> if I declare all getters and setters of the bean with
> synchronize I avoid the issue of inconsistent data
Once again: For pure getters and setters this sentence is definitely wrong. As long as complex class members are not manipulated / accessed concurrently, there is no need for synchronization (within the class).
> thread 1 sets a value a concurrent thread 2
> could read the data and would get a not actual value...
> if I synchronize the get and set, thread 2 will be
> able to invoke the getter after thread 1 finished the
> setter.
Once again: You don't have it in your hands which thread comes first. And synchronizing a method only means that a thread calling this method will run through it as an atomic operation, no other thread will disturb. But getters and setters normally are atomic, you cannot reach more... If a thread calls two (synchronized) methods of the same object, between these two calls, "the race is open again...".
A good example is http://www-106.ibm.com/developerworks/java/library/j-threads1.html
See the example at the end of this link, that's somehow just what we are talking about. The solution would be to synchronize the <i>setFoo(getFoo() + 1)</i> itself (for example with the bean object as locker). Whereas the synchronization of the methods is superfluous (and time consuming).
Hope it helps
Detlev -
Hi does anybody out there no how to hot -deploy non ejb classes .Like jsp
tags for example? It is extremely to code them without a hot deployment
ability.
Thanks in advance
Jeff Anderson
Cameron,
In general, what kind of "interesting bugs" and "design flaws" do you mean?
I would expect that using any kind of cache can allow for bugs due to developers
confusion... but are there inherent "bugs" (or design flaws) that are built into
WL's Cache tag?
Jack Lin
Cameron Purdy wrote:
> Install the latest SP. They are (relatively speaking) resource intensive.
> However, properly implemented/used, this relative cost is close to 0.
> (Instantiating a Java class and calling a few empty methods uses a couple
> hundred clock cycles on a good JVM.) BTW Pooling is considerably more
> expensive for simple objects than instantiating new ones. Also, due to
> design flaws in the custom tag API, pooling JSP tags could lead to some
> interesting bugs related to the lack of re-initialization.
>
> --
>
> Cameron Purdy
> [email protected]
> http://www.tangosol.com
> WebLogic Consulting Available
>
> "Anthony Raiti" <[email protected]> wrote in message
> news:39d4a35f$[email protected]..
> We are researching JSP Tags as a method of seperating our creative and
> coding efforts. Our research is showing that JSP tags is a resource hog and
> noticed that none of the JSP Tags are being pooled. Docs that we have looked
> at suggest that pooling does occur, but we do not see it happening. Is
> anyone using this technology and if so how is the performance?
-
I am having a problem relacing the include file of let's call it a
header.jsp in a menu page named menu.jsp.
So in my header.jsp file let's say I do something simple like
<table>
<tr><td><jato:href name="first">First Option
</jato:href></td></tr></table>
and so on....
And in my main.jsp I have a simple include at the top of my page
like so
<html
<body>
<%include file=header.jsp%>
etc.
Now when JRun 3.0 makes the include replacement, it seems to have a
problem where it tells me
Servlet error 500
com.iplanet.jato.view href : taglib navigation not found
BUT when I take out the jato tags in the include file...I can get
JRun to make the replacement perfectly....
Does anyone else have this problem and if so how did you get around
it?Sorry to bother you again, but I couldn't find anything that looked strange
is this file. Can you send us the original file at our personal email
addresses? I'd like to see exactly where the compilation error occurs and
it's not possible with the file inlined here.
todd.fast@e...
michael.frisino@s...
Thanks,
Todd
----- Original Message -----
From: <suket@u...>
Sent: Wednesday, January 17, 2001 2:02
Subject: [iPlanet-JATO] Re: include jsp tags
Hi Mike,
Both of the jsp files (pgHelp.jsp and pgFooter.jsp)
are in the same folder. I removed the IPP/ipp portion in the
include directive but still giving the same err.
iam using Allair Jrun 3.0.
Here is the intermediary generated Jsp file
/ Generated by JRun, do not edit
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import allaire.jrun.jsp.JRunJSPStaticHelpers;
public class jrun__IPP__ipp__pgHelp2ejsp13 extends
allaire.jrun.jsp.HttpJSPServlet implements
allaire.jrun.jsp.JRunJspPage
private ServletConfig config;
private ServletContext application;
private Object page = this;
private JspFactory __jspFactory = JspFactory.getDefaultFactory();
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, java.io.IOException
if(config == null) {
config = getServletConfig();
application = config.getServletContext();
response.setContentType("text/html; charset=ISO-8859-1");
PageContext pageContext = __jspFactory.getPageContext(this,
request, response, null, true, 8192, true);
JspWriter out = pageContext.getOut();
HttpSession session = pageContext.getSession();
try {
out.print("\r\n\r\n");
IPP.ipp.pgHelpViewBean viewBean = (IPP.ipp.pgHelpViewBean)
pageContext.getAttribute("viewBean", PageContext.REQUEST_SCOPE);
if(viewBean == null) {
if(JRunJSPStaticHelpers.getAndSetBean(pageContext,
"viewBean", IPP.ipp.pgHelpViewBean.class
, PageContext.REQUEST_SCOPE, 3)) {
viewBean = (IPP.ipp.pgHelpViewBean)pageContext.getAttribute
("viewBean", PageContext.REQUEST_SCOPE);
} else {
viewBean = (IPP.ipp.pgHelpViewBean)pageContext.getAttribute
("viewBean", PageContext.REQUEST_SCOPE);
pageContext.setAttribute("viewBean",viewBean);
out.print("\r\n");
com.iplanet.jato.taglib.UseViewBeanTag useViewBean__4_1 =
(com.iplanet.jato.taglib.UseViewBeanTag)
JRunJSPStaticHelpers.createTagHandler(pageContext,
"com.iplanet.jato.taglib.UseViewBeanTag");
useViewBean__4_1.setPageContext(pageContext);
useViewBean__4_1.setParent(null);
useViewBean__4_1.setClassName("IPP.ipp.pgHelpViewBean");
int useViewBean__4_1_startVal = useViewBean__4_1.doStartTag();
JRunJSPStaticHelpers.checkStartVal
("com.iplanet.jato.taglib.UseViewBeanTag",useViewBean__4_1_startVal,Bo
dyTag.EVAL_BODY_INCLUDE,4);
if(useViewBean__4_1_startVal == BodyTag.EVAL_BODY_INCLUDE) {
com.iplanet.jato.view.ContainerView currentView =
(com.iplanet.jato.view.ContainerView)pageContext.getAttribute
("currentView");
com.iplanet.jato.view.TiledView currentTiledView =
(com.iplanet.jato.view.TiledView)pageContext.getAttribute
("currentTiledView");
out.print("\r\n<HTML>\r\n<HEAD><!--jato:text name=\"stTemp\"
fireDisplayEvents=\"true\" escape=\"true\" /--><!-- Added Temporarily
by ravindran on 8th jan 2001 -->\r\n");
com.iplanet.jato.taglib.TextFieldTag textField__7_1 =
(com.iplanet.jato.taglib.TextFieldTag)
JRunJSPStaticHelpers.createTagHandler(pageContext,
"com.iplanet.jato.taglib.TextFieldTag");
textField__7_1.setPageContext(pageContext);
textField__7_1.setParent(useViewBean__4_1);
textField__7_1.setSize("20");
textField__7_1.setMaxLength("20");
textField__7_1.setFireDisplayEvents("true");
textField__7_1.setName("tbUserID");
textField__7_1.doStartTag();
if(textField__7_1.doEndTag() == Tag.SKIP_PAGE) {
if(true) return;
out.print("\r\n<TITLE>pgHelp</TITLE>\r\n</HEAD>\r\n<body BGCOLOR=
\"white\" bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#0000FF\" vlink=
\"#800080\" alink=\"#FF0000\">\r\n");
com.iplanet.jato.taglib.FormTag form__11_1 =
(com.iplanet.jato.taglib.FormTag)JRunJSPStaticHelpers.createTagHandler
(pageContext, "com.iplanet.jato.taglib.FormTag");
form__11_1.setPageContext(pageContext);
form__11_1.setParent(useViewBean__4_1);
form__11_1.setMethod("post");
form__11_1.setName("pgHelp");
int form__11_1_startVal = form__11_1.doStartTag();
JRunJSPStaticHelpers.checkStartVal
("com.iplanet.jato.taglib.FormTag",form__11_1_startVal,BodyTag.EVAL_BO
DY_INCLUDE,11);
if(form__11_1_startVal == BodyTag.EVAL_BODY_INCLUDE) {
out.print("\r\n");
if(form__11_1.doEndTag() == Tag.SKIP_PAGE) {
if(true) return;
out.print("\r\n");
com.iplanet.jato.taglib.UseContainerViewTag view__1_1 =
(com.iplanet.jato.taglib.UseContainerViewTag)
JRunJSPStaticHelpers.createTagHandler(pageContext,
"com.iplanet.jato.taglib.UseContainerViewTag");
view__1_1.setPageContext(pageContext);
view__1_1.setParent(null);
view__1_1.setName("IPP.ipp.pgFooterViewBean");
int view__1_1_startVal = view__1_1.doStartTag();
JRunJSPStaticHelpers.checkStartVal
("com.iplanet.jato.taglib.UseContainerViewTag",view__1_1_startVal,Body
Tag.EVAL_BODY_INCLUDE,1);
if(view__1_1_startVal == BodyTag.EVAL_BODY_INCLUDE) {
currentView = (com.iplanet.jato.view.ContainerView)
pageContext.getAttribute("currentView");
currentTiledView = (com.iplanet.jato.view.TiledView)
pageContext.getAttribute("currentTiledView");
com.iplanet.jato.view.ContainerView
IPP.ipp.pgFooterViewBean = (com.iplanet.jato.view.ContainerView)
pageContext.getAttribute("IPP.ipp.pgFooterViewBean");
out.print("\r\n<hr color=red size=2>\r\nfrom new_footer.jsp in
IPP/ipp directory\r\n<font size=\"-2\" face=\"Arial\"><i>Send
comments to <a href=\"mailto:supportdept@a...\">Any
Company</a></i></font>\r\n<hr color=red size=2>\r\n");
com.iplanet.jato.taglib.HiddenTag hidden__6_1 =
(com.iplanet.jato.taglib.HiddenTag)
JRunJSPStaticHelpers.createTagHandler(pageContext,
"com.iplanet.jato.taglib.HiddenTag");
hidden__6_1.setPageContext(pageContext);
hidden__6_1.setParent(view__1_1);
hidden__6_1.setFireDisplayEvents("true");
hidden__6_1.setName("hdFooter");
hidden__6_1.doStartTag();
if(hidden__6_1.doEndTag() == Tag.SKIP_PAGE) {
if(true) return;
out.print("\r\n");
if(view__1_1.doEndTag() == Tag.SKIP_PAGE) {
if(true) return;
out.print("\r\n");
out.print("\r\n</BODY> \r\n</HTML>\r\n");
if(useViewBean__4_1.doEndTag() == Tag.SKIP_PAGE) {
if(true) return;
} catch(Throwable t) {
if(t instanceof ServletException)
throw (ServletException) t;
if(t instanceof java.io.IOException)
throw (java.io.IOException) t;
if(t instanceof RuntimeException)
throw (RuntimeException) t;
throw JRunJSPStaticHelpers.handleException(t,
pageContext);
} finally {
__jspFactory.releasePageContext(pageContext);
public String getServletInfo()
return "pgHelp";
private static final String[] __dependencies__ =
{"/IPP/ipp/pgHelp.jsp",null};
private static final long[] __times__ = {979720473658L,0L};
public String[] __getDependencies()
return __dependencies__;
public long[] __getLastModifiedTimes()
return __times__;
public int __getTranslationVersion()
return 14;
it is generating 2 semicolons automatically..
near pageContext.getAttribute("IPP.ipp.pgFooterViewBean");
regards
ravi
In [email protected], "Mike Frisino" <Michael.Frisino@S...>
wrote:
Hi Suket,
I just retested something very similar to this in 1.0.
Essentially, i took an existing page which included a tiledView.
I moved the TiledView jsp block into an entirely separate jsp file.
I then replace the TiledView jsp block in the original jsp with aninclude
<%@ include file="TiledGetOrders.jsp"%>
It worked like a charm.
So I am not sure what is wrong in your case.
Could be a jrun bug?
I have tested in resin 1.2.1
To do proper analysis, we would need to see
1. The intermediary .java file that the jsp engine creates, andthen tries
to compile.
C:/Program
Files/Allaire/JRun/servers/default/ipp/WEB-INF/jsp/jrun__IPP__ipp__pgHelp2ej
sp.java
Can you send that to us?
Incidentally, although we do not think a problem there would causethe
compile time error you are seeing,
i am curious about your file value.
<%@ include file="/IPP/ipp/pgFooter.jsp"%>I did not need to use a qualified file name, although my includetarget file
was in the same directory as the
page that was including it. What is the file system relationshipbetween
your top level page "pgHelp" and the include
target "pgFooter".
Are they in same or diff directories?
----- Original Message -----
From: <suket@u...>
Sent: Tuesday, January 16, 2001 9:42 PM
Subject: [iPlanet-JATO] Re: include jsp tags
Hi,
We tried to follow the steps described by you to have
dynamic include in a jsp page.
my jsp file content is
<%@p... info="pgHelp" language="java"%>
<%@t... uri="/WEB-INF/jato.tld" prefix="jato"%>
<jsp:useBean id="viewBean" class="IPP.ipp.pgHelpViewBean"
scope="request"></jsp:useBean>
<jato:useViewBean className="IPP.ipp.pgHelpViewBean">
<HTML>
<HEAD>
<jato:textField name="tbUserID" size="20" maxLength="20"
fireDisplayEvents="true" />
<TITLE>pgHelp</TITLE>
</HEAD>
<body BGCOLOR="white" bgcolor="#FFFFFF" text="#000000"
link="#0000FF" vlink="#800080" alink="#FF0000">
<jato:form name="pgHelp" method="post">
</jato:form>
<%@ include file="/IPP/ipp/pgFooter.jsp"%>
</BODY>
</HTML>
</jato:useViewBean>
This is my pgFooter.jsp
<jato:view name="IPP.ipp.pgFooterViewBean">
<hr color=red size=2>
from new_footer.jsp in IPP/ipp directory
<font size="-2" face="Arial"><i>Send comments to <a
href="mailto:<a href="/group/SunONE-JATO/post?protectID=061075104115193209050223163176249165134048139046">supportdept@a...</a>">Any Company</a></i></font>
<hr color=red size=2>
<jato:hidden name="hdFooter" fireDisplayEvents="true" />
</jato:view>
There is no compilation error in pgFooterViewBean and in
pgHelpViewBean.
How ever iam getting a runtime error,
500 Internal Server Error
/ipp/servlet/IPP.ipp.ippServlet:
javax.servlet.ServletException: Compilation error occured:
allaire.jrun.scripting.DefaultCFE:
Errors reported by compiler:C:/Program
Files/Allaire/JRun/servers/default/ipp/WEB-
INF/jsp/jrun__IPP__ipp__pgHelp2ejsp13.java:105:50:105:50: Syntax:
expected instead of this token
What could be the reason for this error message?
We tried the same thing with another approach, instead of using
include directive, we directly copied the code of pgFooter.jsp in
pghelp.jsp.
even that is giving the same error..
<%@p... info="pgHelp" language="java"%>
<%@t... uri="/WEB-INF/jato.tld" prefix="jato"%>
<jsp:useBean id="viewBean" class="IPP.ipp.pgHelpViewBean"
scope="request"></jsp:useBean>
<jato:useViewBean className="IPP.ipp.pgHelpViewBean">
<HTML>
<HEAD>
<jato:textField name="tbUserID" size="20" maxLength="20"
fireDisplayEvents="true" />
<TITLE>pgHelp</TITLE>
</HEAD>
<body BGCOLOR="white" bgcolor="#FFFFFF" text="#000000"
link="#0000FF" vlink="#800080" alink="#FF0000">
<jato:form name="pgHelp" method="post">
</jato:form>
<jato:view name="IPP.ipp.pgFooterViewBean">
<hr color=red size=2>
from new_footer.jsp in IPP/ipp directory
<font size="-2" face="Arial"><i>Send comments to <a
href="mailto:<a href="/group/SunONE-JATO/post?protectID=061075104115193209050223163176249165134048139046">supportdept@a...</a>">Any Company</a></i></font>
<hr color=red size=2>
<jato:hidden name="hdFooter" fireDisplayEvents="true" />
</jato:view>
</BODY>
</HTML>
</jato:useViewBean>
Please give us a feasible solution to solve this problem.
Thx
Ravi
--- In [email protected], "Todd Fast" <Todd.Fast@S...>wrote:
Craig & Eric--
(If you're not interested in the resolution to the problem Craigposted,
please skip ahead to the section in which I describe the
preferred
technique
for including headers and other common content in a JATO page.
This
discussion is very important because I introduce the concept of"view
compostion", in which JATO pages are composed of modular andreusable view
components. This is one of the most powerful new features of
JATO,
and a
capability that simply wasn't possible in NetDynamics.)
Posted Problem Resolution
Craig & Eric, from what I can tell, you are both trying to
include
a full
view bean in a parent page at translation time. This is notpossible, as
you can see from the compiler errors you get. There are
collisions
when
multiple top-level tags are included in the same JSP.
When I said earlier that you needed to use a translation-timeinclude
instead of a run-time include, I was assuming that you were
trying
to
include a fragment of HTML/JSP in the parent page. By
fragment, I
mean HTML
or JSP content that does not declare a view bean or form, but
rather
references views contained within the parent view bean. If youwant to
include a full page (JSP + ViewBean) in another page, then you'dneed to use
a run-time include. A run-time include temporarily pauses therendering of
the current page, and sends the full request to the included
page
as if it
were a separate client request. The resulting content from theincluded
page is inlined into the parent page's content, and processing
of
the parent
page then continues.
Now I realize after thinking about it a bit that we may not have
sufficiently provided for full page includes because of some
late-
breaking
changes in the request context handling. After some basic
testing,
it
appears that if you try to include one JATO page in another byreferencing
the JSP, the included page will cause a class cast exception tooccur.
There may also be problems because the request context on theincluded page
will not have been set. In any case, full JATO page inclusionlooks like
it's an issue we're going to have to address with some fixes
before
it will
work properly. My apologies. (One workaround if this is
necessary
is to
make the included view bean a child view of the parent view
bean.
I won't
go into that however).
How to Include Common Content
Now, on to the discussion of the preferred way of including
common
content
in a JATO page. Let's say you have a common header you want toinclude in
one or more of your JATO pages. Because of the issue I notedabove, and the
fact that the header is not really independently displayable,
you
don't want
to do a run-time include (which, remember, would necessitateincluding a
full JATO page).
Instead, you should include the header as an HTML/JSP fragmentusing a
translation-time include. Depending on whether your header hasdynamic
information, you can do one of two things. If the header is
just
static
content and/or set of links, you can just reference the HTMLfragment in the
parent HTML directly, and you won't need any kind of view or
view
bean to
back it, or any reference to anything in JATO.
If you need some dynamic info in the header, like the module URLfor a link,
you can reference the parent page's view bean for this
information
by simply
including references to the parent page's implicit JSP variables(viewBean,
currentVIew, and currentTiledView). For example:
Parent JSP:
<jsp:useBean id="viewBean" class="..."scope="request"></jsp:useBean>
<jato:useViewBean className="..." fireChildDisplayEvents="true">
<%@ include file="MyInclude.jsp" %>
</jato:useViewBean>
Included content (MyInclude.jsp):
... viewBean.getRequestContext().getModuleURL() ...
The final HTML with the included content would then look like
this:
<jsp:useBean id="viewBean" class="..."scope="request"></jsp:useBean>
<jato:useViewBean className="..." fireChildDisplayEvents="true">
... viewBean.getRequestContext().getModuleURL() ...
</jato:useViewBean>
MyInclude.jsp will be inlined in the parent JSP before it istranslated to a
servlet. Note that it does not include the full HTML tags
normally
found in
an HTML file--there are no <html>, <head>, or <body> tags
because
it is not
expected to be used outside of an include page. In effect,
this is
the
equivalent of a server-side include (SSI).
Now, if you need truly dynamic info in the header, like say youwant to
display the user's name and SSN, then you'd likely want to
embed a
child
view in the parent view bean which will encapsulate & provide
the
necessary
information. This is in contrast to actually making these
fields
direct
children of the the parent view bean, which would be a tedious
and
error
prone task on every page you wanted to include this information.Let me try
to contrast these two approaches with a diagram of parent-child
relationships:
Here's the bad way:
ParentViewBean (ViewBean)
|
+-- UserFirstName (StaticTextField)
|
+-- UserSSN (StaticTextField)
In this situation, you'd need to provide the logic to populatethese fields
in every view bean on which they appeared. This is tedious andessentially
eliminates the "common"-ness of the content (this is also whatNetDynamics
forced people to do).
Now, the better way:
ParentViewBean (ViewBean)
|
+-- MyHeaderView (MyHeaderView.java)
|
+-- UserFirstName (StaticTextField)
|
+-- UserSSN (StaticTextField)
In the better way, you can see that the header information isencapsulated
in an instance of "MyHeaderView", which is a subclass ofContainerViewBase
or one of the other ContainerView subtypes. The population of
the
data
fields is encapsulated in that view, and the parent view need
not
know
anything about what's actually being displayed by that view.
Thus, you can see that MyHeaderView, in conjunction with a
snippet
of JSP
content in a companion file, is completely modular and can beembedded in
any parent view bean on which you want the header to appear.
The
only
requirement is then to include MyHeaderView as a child view of
the
parent
view bean, and to include the correct JSP content that
references
that child
view.
The included JSP content would now look something like this:
<jato:view name="MyHeaderView">
<table>
<tr><td>... <jato:staticText name="UserFirstName"/>
...</td></tr>
<tr><td>... <jato:staticText name="UserSSN"/> ...</td></tr>
</table>
</jato:view>
If we now included this content in the parent JSP from furtherabove, we get
the following as the JSP content before it is translated into aservlet:
<jsp:useBean id="viewBean" class="..."scope="request"></jsp:useBean>
<jato:useViewBean className="..." fireChildDisplayEvents="true">
<jato:view name="MyHeaderView">
<table>
<tr><td>... <jato:staticText name="UserFirstName"/>
...</td></tr>
<tr><td>... <jato:staticText name="UserSSN"/> ...</td></tr>
</table>
</jato:view>
</jato:useViewBean>
Ultimately, this technique is called "view compostion" or "view
aggregation", and is one of the major new features of JATO. Youcan now
define reusable view components and embed them in multiple viewcontainers,
on the same page or on different pages. Each page acts as a
frame,
in which
you provide the contents from modular components. Using thistechnique, you
can develop reusable view classes and chunks of JSP that can bearbitrarily
combined into complex pages.
I know this is a long and rambling discussion, but I hope I've
made
myself
at least partly clear. I'm more than happy to clarify anything
or
elaborate
more. Please let me know.
Todd
Todd Fast
Senior Engineer
Sun/Netscape Alliance
todd.fast@e...
[email protected]
[email protected] -
How to get the values of an Array using JSP Tags
Hey guys,
I need some help. I've splited a String using
fn:split(String, delim) where String = "1,2,3,4" and delim is ,
This method returns an Array of splited Strings. how do i get the values from this array using jsp tags. I don't wanna put java code to achive that.
Any help would be highly appreciated
ThanksThe JSTL forEach tag.
In fact if all you want to do is iterate over the comma separated list, the forEach tag supports that without having to use the split function.
<c:set var="list" value="1,2,3,4"/>
<c:forEach var="num" items="${list}">
<c:out value="${num}"/>
</c:forEach>The c:forTokens method will let you do this with delimiters other than a comma, but the forEach tag works well just with the comma-delimited string. -
Error when run a simple sample using jsp tag
When i run a jsp using jsp tag, the tomcat gave me the following information:
Resolve entity failed-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.2//EN http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd
My tld file is:
<?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>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>sample</short-name>
<uri>WEB-INF/sampleTag</uri>
<display-name>SampleTag</display-name>
<description>Sample TLD</description>
<tag>
<name>time</name>
<tag-class>com.sample.taglib.TimeTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
Anybody can tell me why?
Thanks!!!It's strange bacause DTD is available under given address.
Which JSP version are you using?
Do you have any other tld file, which uses the same DTD version? Do tags define in it work properly?
Maby try to use 1.1 version of DTD?
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">But remember than version 1.1 has another node names (see http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd).
Maybe you are looking for
-
Problem with printing JFrame with several other components on it
Hi, i am trying to print out a JFrame that contains other Swing and AWT components, such as JTables and menus etc. The problem is that the options that i select from the pageformat dialog, do not get set when the printing is taking place. As a result
-
BlackBerry Z10 Error "The file cannot be played due to an unexpected error (10)"
Hope someone can help this one, I received a voice note through BlackBerry Messenger, after downloading I tried to play it and the following message popped up, "The file cannot be played due to an unexpected error (10)". I received another file, 3GP
-
Hi friends , I have a problem on one of our Meta chain . We have a meta chain , and it have some sub chains . It is a daily scheduled meta chain. One day some thing happened and one of the sub chain begun to hang on . One of the sub chain of meta
-
Share two powerbooks wirelessly?
this may sound complicated, but really it is simple. i have one powerbook at one end of the house. airport extreme card. another powerbook at the other end of the house. airport extreme card. this powerbook is hardwired to an ethernet connection. In
-
How do I install and download firefox on my Nintendo3DSXL
i need to upgrade internet browser and get a html5 for some sites