You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by hu...@apache.org on 2006/02/10 22:09:58 UTC
svn commit: r376854 [4/5] - in /struts/taglib/trunk:
src/java/org/apache/struts/taglib/ src/webapp/WEB-INF/
src/webapp/org/apache/struts/taglib/logic/ xdocs/
Modified: struts/taglib/trunk/xdocs/faq.xml
URL: http://svn.apache.org/viewcvs/struts/taglib/trunk/xdocs/faq.xml?rev=376854&r1=376853&r2=376854&view=diff
==============================================================================
--- struts/taglib/trunk/xdocs/faq.xml (original)
+++ struts/taglib/trunk/xdocs/faq.xml Fri Feb 10 13:09:57 2006
@@ -17,447 +17,632 @@
// ======================================================================== 78
-->
<document>
-<properties>
-<title>Taglib FAQ</title>
-</properties>
-<body>
-<a name="faq"/>
-<section name="Struts Taglib FAQ">
-
-<a name="contents"/>
-<subsection name="Index">
-
-<ul>
-
- <li>
- <a href="#jsf">What about JSTL and JavaServer Faces?</a>
- </li>
-
- <li>
- <a href="#xhtml">Are the Struts tags XHTML compliant?</a>
- </li>
-
- <li>
- <a href="#wml">Will the Struts tags support other markup languages such as WML</a>
- </li>
-
- <li>
- <a href="#multiple">Can I use multiple HTML form elements with the same
- name?</a>
- </li>
-
- <li>
- <a href="#multipleSubmits">Can I have multiple submit buttons on the same
- form?</a>
- </li>
-
- <li><a href="#focus">Why doesn't the focus feature on the <html:form>
- tag work in every circumstance?</a>
- </li>
-
- <li><a href="#checkbox">Why are my checkboxes not being set from ON to
- OFF?</a>
- </li>
-
- <li>
- <a href="#javascript.submit">How do I use JavaScript to submit a form? </a>
- </li>
-
- <li>
- <a href="#javascript">How do I use JavaScript to ... </a>
- </li>
-
- <li>
- <a href="#reset">Do I need to implement reset and set all my form
- properties to their initial values?</a>
- </li>
-
- <li>
- <a href="#scriptlets">Can't I just create some of my JavaBeans in the JSP
- using a scriptlet?</a>
- </li>
-
- <li>
- <a href="#link">Why does the <html:link> tag URL-encode javascript and
- mailto links?"</a>
- </li>
-
- <li>
- <a href="#pager">How can I scroll through list of pages like the search
- results in google?</a>
- </li>
-
- <li>
- <a href="#minimization">Why does the option tag render selected="selected"
- instead of just "selected"?
- </a></li>
-
- <li>
- <a href="#tags">Why does Struts Taglib provide for so little
- formatting?</a>
- </li>
-
- <li>
- <a href="#layout">Why doesn't Struts Taglib offer more layout options?</a>
- </li>
-
-</ul>
-
-</subsection>
-
-<a name="jsf"/>
-<subsection name="What about JSTL and JavaServer Faces?">
- <p>
- Struts Action Framework works well with the <a href="http://java.sun.com/products/jsp/jstl/">
- JavaServer Standard Tag Library</a>.
- For a JSTL rendition of the original Struts JSP tags,
- see the <a href="http://struts.apache.org/struts-el/index.html">Struts EL subproject</a>.
- </p>
-
- <p>
- If you'd like to start using
- <a href="http://java.sun.com/j2ee/javaserverfaces/">JavaServer Faces</a>
- components in your Struts Action Framework application,
- please see the <a href="http://struts.apache.org/struts-faces/index.html">Struts Faces</a> subproject.
- If you'd like to get a fresh start in a pure JSF environment,
- please see the <a href="http://struts.apache.org/shale/index.html">Struts Shale</a> framework.
- </p>
-</subsection>
-
-<a name="xhtml"/>
-<subsection name="Are the Struts tags XHTML compliant?">
-<p>If you use an <html:html xhtml="true> or <html:xhtml/> element on your page, the tags
-will render as XHTML (since Struts 1.1). </p>
-</subsection>
-
-<a name="wml"/>
-<subsection name="Will the Struts tags support other markup languages such as WML">
-<p>
-Struts itself is markup neutral. The original Struts taglibs are only one example of how
-presentation layer components can access the framework. The framework objects are exposed
-through the standard application, session, and request contexts, where any Java component in
-the application can make use of them.
-</p>
-
-<p>Markup extensions that use Struts are available for
-<a href="http://jakarta.apache.org/velocity">Velocity</a> and
-<a href="http://www.openroad.ca/opencode/">XLST</a>, among others.
-A new Struts tag library for
-<a href="#jsf">Java Server Faces</a> is also in development.
-</p>
-
-<p>For more about using WAP/WML with Struts see the article
-<a href="http://www.sys-con.com/pbdj/archives2/0904/hamboeck/">
-WAP up your EAserver</a>.
-</p>
-</subsection>
-
-<a name="multiple"/>
-<subsection name="Can I use multiple HTML form elements with the same name?">
-<p>
-Yes. Define the element as an array and Struts will autopopulate it like any other.
-</p>
-<pre>
-<code>
-private String[] id= {};
-public String[] getId() { return this.id; }
-public void setItem(String id[]) {this.id = id;}
-</code>
-</pre>
-<p>
-And so forth
-</p>
-</subsection>
-
-<a name="multipleSubmits"/>
-<subsection name="Can I have multiple submit buttons on the same form?">
-<p>
-<strong>Yes</strong>. The issue is that only one action class can be
-associated with a single form. So the real issue is how do I decode
-multiple submit types to a single <code>Action</code> class.
-There is more than one way to achieve this functionality.</p>
-<p>
-The way that is suggested by struts is right out of the javadoc for
-<a href="../api/org/apache/struts/actions/LookupDispatchAction.html">
-<code>LookupDispatchAction</code></a>.
-Basically, <code>LookupDispatchAction</code> is using the keys from
-<code>ApplicationProperties.resources</code> as keys to a map of actions
-available to your <code>Action</code> class. It uses
-<a href="http://java.sun.com/j2se/1.3/docs/guide/reflection/">reflection</a> to
-decode the request and invoke the proper action. It also takes advantage of
-the struts <a href="../userGuide/struts-html.html#submit">
-<code><html:submit></code></a> tags and is straight forward to implement.</p>
-<p>
-You can roll your own with JavaScript events and <code>javascript:void
-(document.forms["myform"].submit)</code> on any html element. This gives you
-control of how you want your page to look. Again you
-will have to decode the expected action in the <code>execute</code> method of
-your action form if you choose this route.</p>
-</subsection>
-
-<a name="focus"/>
-<subsection name="Why doesn't the focus feature on the <html:form> tag work in every circumstance?">
-<p>
-Unfortunately, there is some disagreement between the various browsers, and different versions of the same browser, as to how the focus can be set.
-The <html:form> tag provides a quick and easy JavaScript that will set the focus on a form
-for most versions of most browsers.
-If this feature doesn't work for you, then you should set the focus using your own JavaScript.
-The focus feature is a convenient "value-add" -- not a core requirement of the tag.
-If you do come up with a JavaScript that provides the final solution to this project,
-please post your patch to this <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13454">Bugzilla ticket</a>.
-</p>
-</subsection>
-
-<a name="checkbox"/>
-<subsection name="Why are my checkboxes not being set from ON to OFF?">
-<p>
-A problem with a checkbox is that the browser will only include it in the request
-when it is checked. If it is not checked, the HTML specification suggests that it
-not be sent (i.e. omitted from the request). If the value of the checkbox is being
-persisted, either in a session bean or in the model, a checked box can never
-unchecked by a HTML form -- because the form can never send a signal to uncheck
-the box. The application must somehow ascertain that since the element was not
-sent that the corresponding value is unchecked.
-</p>
-<p>
-The recommended approach for Struts applications is to use the reset method in the
-ActionForm to set all properties represented by checkboxes to null or false. The
-checked boxes submitted by the form will then set those properties to true. The
-omitted properties will remain false. Another solution is to use radio buttons
-instead, which always submit a value.
-</p>
-<p>
-It is important to note that the HTML specification recommends this same
-behavior whenever a control is not "successful". Any blank element in a HTML
-form is not guaranteed to submitted. It is therefor very important to set the
-default values for an ActionForm correctly, and to implement the reset method
-when the ActionForm might kept in session scope.
-</p>
-</subsection>
-
-<a name="javascript.submit"/>
-<subsection name="Can I use JavaScript to submit a form?">
-<p>
- You can submit a form with a link as below.
- BTW, the examples below assume you are in an <html:form> block and 'myForm'
- is picked up from the struts-config.xml name field of the action.
-</p>
-<source>
- <a href='javascript:void(document.forms["myForm"].submit()>My Link</a>
-</source>
-<p>
- Now the trick in the action is to decode what action you intend to perform.
- Since you are using JavaScript, you could set a field value and look for it in
- the request or in the form.
-</p>
-<p>
- ... html/javascript part ...
-</p>
-<source>
- <input type='hidden' value='myAction' />
- <input type='button' value='Save Meeeee'
- onclick='document.forms["myForm"].myAction.value="save";
- document.forms["myForm"].submit();' />
- <input type='button' value='Delete Meeeee'
- onclick='document.forms["myForm"].myAction.value="delete";
- document.forms["myForm"].submit();' />
-</source>
-<p>
- ... the java part ...
-</p>
-<source>
- class MyAction extends ActionForm implements Serializable {
-
- public ActionForward execute (ActionMapping map, ActionForm form,
- HttpServletRequest req, HttpServletResponse) {
+ <properties>
+ <title>Taglib FAQ</title>
+ </properties>
+ <body>
+ <a name="faq"/>
+ <section name="Struts Taglib FAQ">
+
+ <a name="contents"/>
+ <subsection name="Index">
+
+ <ul>
+
+ <li>
+ <a href="#jsf">What about JSTL and JavaServer
+ Faces?</a>
+ </li>
+
+ <li>
+ <a href="#xhtml">Are the Struts tags XHTML
+ compliant?</a>
+ </li>
+
+ <li>
+ <a href="#wml">Will the Struts tags support other
+ markup languages such as WML</a>
+ </li>
+
+ <li>
+ <a href="#multiple">Can I use multiple HTML form
+ elements with the same
+ name?</a>
+ </li>
+
+ <li>
+ <a href="#multipleSubmits">Can I have multiple submit
+ buttons on the same
+ form?</a>
+ </li>
+
+ <li>
+ <a href="#focus">Why doesn't the focus feature on the
+ <html:form>
+ tag work in every circumstance?</a>
+ </li>
+
+ <li>
+ <a href="#checkbox">Why are my checkboxes not being
+ set from ON to
+ OFF?</a>
+ </li>
+
+ <li>
+ <a href="#javascript.submit">How do I use JavaScript
+ to submit a form?</a>
+ </li>
+
+ <li>
+ <a href="#javascript">How do I use JavaScript to
+ ...</a>
+ </li>
+
+ <li>
+ <a href="#reset">Do I need to implement reset and set
+ all my form
+ properties to their initial values?</a>
+ </li>
+
+ <li>
+ <a href="#scriptlets">Can't I just create some of my
+ JavaBeans in the JSP
+ using a scriptlet?</a>
+ </li>
+
+ <li>
+ <a href="#link">Why does the <html:link> tag
+ URL-encode javascript and
+ mailto links?"</a>
+ </li>
+
+ <li>
+ <a href="#pager">How can I scroll through list of
+ pages like the search
+ results in google?</a>
+ </li>
+
+ <li>
+ <a href="#minimization">Why does the option tag render
+ selected="selected"
+ instead of just "selected"?
+ </a>
+ </li>
+
+ <li>
+ <a href="#tags">Why does Struts Taglib provide for so
+ little
+ formatting?</a>
+ </li>
+
+ <li>
+ <a href="#layout">Why doesn't Struts Taglib offer more
+ layout options?</a>
+ </li>
+
+ </ul>
+
+ </subsection>
+
+ <a name="jsf"/>
+ <subsection name="What about JSTL and JavaServer Faces?">
+ <p>
+ Struts Action Framework works well with the
+ <a href="http://java.sun.com/products/jsp/jstl/">
+ JavaServer Standard Tag Library</a>
+ .
+ For a JSTL rendition of the original Struts JSP tags,
+ see the
+ <a href="http://struts.apache.org/struts-el/index.html">
+ Struts EL subproject</a>
+ .
+ </p>
+
+ <p>
+ If you'd like to start using
+ <a href="http://java.sun.com/j2ee/javaserverfaces/">
+ JavaServer Faces</a>
+ components in your Struts Action Framework application,
+ please see the
+ <a href="http://struts.apache.org/struts-faces/index.html">
+ Struts Faces</a>
+ subproject.
+ If you'd like to get a fresh start in a pure JSF
+ environment,
+ please see the
+ <a href="http://struts.apache.org/shale/index.html">Struts
+ Shale</a>
+ framework.
+ </p>
+ </subsection>
+
+ <a name="xhtml"/>
+ <subsection name="Are the Struts tags XHTML compliant?">
+ <p>If you use an <html:html xhtml="true> or <html:xhtml/>
+ element on your page, the tags
+ will render as XHTML (since Struts 1.1).</p>
+ </subsection>
+
+ <a name="wml"/>
+ <subsection
+ name="Will the Struts tags support other markup languages such as WML">
+ <p>
+ Struts itself is markup neutral. The original Struts
+ taglibs are only one example of how
+ presentation layer components can access the framework.
+ The framework objects are exposed
+ through the standard application, session, and request
+ contexts, where any Java component in
+ the application can make use of them.
+ </p>
+
+ <p>Markup extensions that use Struts are available for
+ <a href="http://jakarta.apache.org/velocity">Velocity</a>
+ and
+ <a href="http://www.openroad.ca/opencode/">XLST</a>
+ , among others.
+ A new Struts tag library for
+ <a href="#jsf">Java Server Faces</a>
+ is also in development.
+ </p>
+
+ <p>For more about using WAP/WML with Struts see the article
+ <a href="http://www.sys-con.com/pbdj/archives2/0904/hamboeck/">
+ WAP up your EAserver</a>
+ .
+ </p>
+ </subsection>
+
+ <a name="multiple"/>
+ <subsection
+ name="Can I use multiple HTML form elements with the same name?">
+ <p>
+ Yes. Define the element as an array and Struts will
+ autopopulate it like any other.
+ </p>
+ <pre>
+ <code>
+ private String[] id= {};
+ public String[] getId() { return this.id; }
+ public void setItem(String id[]) {this.id = id;}
+ </code>
+ </pre>
+ <p>
+ And so forth
+ </p>
+ </subsection>
+
+ <a name="multipleSubmits"/>
+ <subsection
+ name="Can I have multiple submit buttons on the same form?">
+ <p>
+ <strong>Yes</strong>
+ . The issue is that only one action class can be
+ associated with a single form. So the real issue is how do
+ I decode
+ multiple submit types to a single
+ <code>Action</code>
+ class.
+ There is more than one way to achieve this functionality.
+ </p>
+ <p>
+ The way that is suggested by struts is right out of the
+ javadoc for
+ <a href="../api/org/apache/struts/actions/LookupDispatchAction.html">
+ <code>LookupDispatchAction</code>
+ </a>
+ .
+ Basically,
+ <code>LookupDispatchAction</code>
+ is using the keys from
+ <code>ApplicationProperties.resources</code>
+ as keys to a map of actions
+ available to your
+ <code>Action</code>
+ class. It uses
+ <a href="http://java.sun.com/j2se/1.3/docs/guide/reflection/">
+ reflection</a>
+ to
+ decode the request and invoke the proper action. It also
+ takes advantage of
+ the struts
+ <a href="../userGuide/struts-html.html#submit">
+ <code><html:submit></code>
+ </a>
+ tags and is straight forward to implement.
+ </p>
+ <p>
+ You can roll your own with JavaScript events and
+ <code>javascript:void
+ (document.forms["myform"].submit)</code>
+ on any html element. This gives you
+ control of how you want your page to look. Again you
+ will have to decode the expected action in the
+ <code>execute</code>
+ method of
+ your action form if you choose this route.
+ </p>
+ </subsection>
+
+ <a name="focus"/>
+ <subsection
+ name="Why doesn't the focus feature on the <html:form> tag work in every circumstance?">
+ <p>
+ Unfortunately, there is some disagreement between the
+ various browsers, and different versions of the same
+ browser, as to how the focus can be set.
+ The <html:form> tag provides a quick and easy
+ JavaScript that will set the focus on a form
+ for most versions of most browsers.
+ If this feature doesn't work for you, then you should set
+ the focus using your own JavaScript.
+ The focus feature is a convenient "value-add" -- not a
+ core requirement of the tag.
+ If you do come up with a JavaScript that provides the
+ final solution to this project,
+ please post your patch to this
+ <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13454">
+ Bugzilla ticket</a>
+ .
+ </p>
+ </subsection>
+
+ <a name="checkbox"/>
+ <subsection
+ name="Why are my checkboxes not being set from ON to OFF?">
+ <p>
+ A problem with a checkbox is that the browser will only
+ include it in the request
+ when it is checked. If it is not checked, the HTML
+ specification suggests that it
+ not be sent (i.e. omitted from the request). If the value
+ of the checkbox is being
+ persisted, either in a session bean or in the model, a
+ checked box can never
+ unchecked by a HTML form -- because the form can never
+ send a signal to uncheck
+ the box. The application must somehow ascertain that since
+ the element was not
+ sent that the corresponding value is unchecked.
+ </p>
+ <p>
+ The recommended approach for Struts applications is to use
+ the reset method in the
+ ActionForm to set all properties represented by checkboxes
+ to null or false. The
+ checked boxes submitted by the form will then set those
+ properties to true. The
+ omitted properties will remain false. Another solution is
+ to use radio buttons
+ instead, which always submit a value.
+ </p>
+ <p>
+ It is important to note that the HTML specification
+ recommends this same
+ behavior whenever a control is not "successful". Any blank
+ element in a HTML
+ form is not guaranteed to submitted. It is therefor very
+ important to set the
+ default values for an ActionForm correctly, and to
+ implement the reset method
+ when the ActionForm might kept in session scope.
+ </p>
+ </subsection>
+
+ <a name="javascript.submit"/>
+ <subsection name="Can I use JavaScript to submit a form?">
+ <p>
+ You can submit a form with a link as below.
+ BTW, the examples below assume you are in an <html:form>
+ block and 'myForm'
+ is picked up from the struts-config.xml name field of the
+ action.
+ </p>
+ <source>
+ <a
+ href='javascript:void(document.forms["myForm"].submit()>My
+ Link</a>
+ </source>
+ <p>
+ Now the trick in the action is to decode what action you
+ intend to perform.
+ Since you are using JavaScript, you could set a field
+ value and look for it in
+ the request or in the form.
+ </p>
+ <p>
+ ... html/javascript part ...
+ </p>
+ <source>
+ <input type='hidden' value='myAction' />
+ <input type='button' value='Save Meeeee'
+ onclick='document.forms["myForm"].myAction.value="save";
+ document.forms["myForm"].submit();' />
+ <input type='button' value='Delete Meeeee'
+ onclick='document.forms["myForm"].myAction.value="delete";
+ document.forms["myForm"].submit();' />
+ </source>
+ <p>
+ ... the java part ...
+ </p>
+ <source>
+ class MyAction extends ActionForm implements Serializable
+ {
+
+ public ActionForward execute (ActionMapping map,
+ ActionForm form,
+ HttpServletRequest req, HttpServletResponse) {
String myAction = req.getParameter("myAction");
if (myAction.equals("save") {
- // ... save action ...
+ // ... save action ...
} else if (myAction.equals("delete") {
- // ... delete action ...
+ // ... delete action ...
+ }
+ }
+ }
}
- }
- }
- }
-</source>
-<p>
- This is just one of many ways to achieve submitting a form and decoding the
- intended action. Once you get used to the framework you will find other ways
- that make more sense for your coding style and requirements. Just remember
- this example is completely non-functional without JavaScript.
-</p>
-<p>
- Here is a link
- which utilizes the LookupDispatch action to submit forms with multiple actions
- without javascript: <a href="http://husted.com/struts/tips/003.html">http://husted.com/struts/tips/003.html</a>
-</p>
-
-</subsection>
-
-<a name="javascript"/>
-<subsection name="How do I use JavaScript to ...">
-
- <p>
- Struts is mainly a server-side technology.
- We bundled in some JSP tags to expose the framework components to your
- presentation page, but past that, the usual development process applies.
- </p>
-
- <p>
- Interactive pages require the use of JavaScript.
- (That's why it was invented.)
- If you want things popping up or doing this when they click that,
- you are outside the scope of Struts and back into the web
- development mainstream.
- </p>
-
- <p>
- You use JavaScript with Struts the same way you use with any presentation
- page.
- Since JavaScript is a client-side technology, you can use simple relative
- references to your scripts.
- If you need to fire a JavaScript from a HTML control, the Struts HTML tags
- have properties for the JavaScript events.
- </p>
-
- <p>
- A very good JavaScript resource is Matt Kruse's site at
- <a href="http://www.mattkruse.com/javascript/">
- http://www.mattkruse.com/javascript/</a>
- </p>
-
-</subsection>
-
-<a name="reset"/>
-<subsection name="Do I need to implement reset and set all my form properties to their initial values?">
-<p>
-No.
-You need to set checkbox properties to false if the ActionForm is being retained in session scope.
-This is because an unchecked box does not submit an attribute.
-Only checked boxes submit attributes.
-If the form is in session scope, and the checkbox was checked, there is no way to turn it back off without the reset method.
-Resetting the properties for other controls, or for a request scope form, is pointless.
-If the form is in request scope, everything already just started at the initial value.
-</p>
-</subsection>
-
-<a name="scriptlets"/>
-<subsection name="Can't I just create some of my JavaBeans in the JSP using a scriptlet?">
-<p>
-Struts is designed to encourage a
-<a href="http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html">
-Model 2/MVC architecture</a>. But there is nothing that prevents you from using Model 1
-techniques in your JavaServer Pages, so the answer to the question is "Yes, you can".
-</p>
-<p>
-Though, using Model 1 techniques in a Struts application does go against the grain.
-The approach recommended by most Struts developers is to create and populate whatever
-objects the view may need in the Action, and then forward these through the request.
-Some objects may also be created and stored in the session or context,
-depending on how they are used.
-</p>
-<p>
-Likewise, there is nothing to prevent you from using scriptlets along with JSP
-tags in your pages. Though, many Struts developers report writing very complex
-scriplet-free applications and recommend the JSP tag approach to others.
-</p>
-<p>
-For help with Model 1 techniques and scriptlets, you might consider joining the
-<a href="http://archives.java.sun.com/jsp-interest.html">Javasoft JSP-interest
-mailing list</a>, where there are more people still using these approaches.
-</p>
-</subsection>
-
-<a name="link"/>
-<subsection name="Why does the <html:link> tag URL-encode javascript and mailto links?">
-<p>
-The <html:link> tag is not intended for use with client-side references like those used to launch Javascripts or email clients.
-The purpose of link tag is to interject the context (or module) path into the URI so that your server-side links are not dependent on your context (or module) name.
-It also encodes the link, as needed, to maintain the client's session on the server.
-Neither feature applies to client-side links, so there is no reason to use the <html:link> tag.
-Simply markup the client-side links using the standard <a/> tag.
-</p>
-</subsection>
-
-<a name="pager"/>
-<subsection name="How can I scroll through list of pages like the search results in google?">
-<p>Many Struts developers use the Pager from the JSPTags site.</p>
-<p><a href="http://jsptags.com/tags/navigation/pager/">http://jsptags.com/tags/navigation/pager/</a></p>
-</subsection>
-
-<a name="minimization"/>
-<subsection name="Why does the option tag render selected=selected instead of just selected?">
-<p>
-Attribute minimization (that is, specifying an attribute with no value) is
-a place where HTML violates standard XML syntax rules. This matters a lot
-for people writing to browsers that support XHTML, where doing so makes
-the page invalid.It's much better for Struts to use the expanded syntax,
-which works the same on existing browsers interpreting HTML, and newer
-browsers that expect XHTML-compliant syntax. Struts is following the
-behavior recommended by the <a href="http://www.w3.org/TR/xhtml1/#h-4.5">
-XHTML specification</a></p>
-</subsection>
-
-<a name="tags"/>
-<subsection name="Why does Struts Taglib provide for so little formatting?">
-<p>
-<em>The Struts tags seem to provide only the most rudimentary functionality.
-Why is there not better support for date formatting and advanced string handling?</em>
-</p>
-<p>
-Three reasons:
-</p>
-<p>
-First, work started on the JSTL and we didn't want to duplicate the effort.
-</p>
-<p>
-Second, work started on Java Server Faces, and we didn't want to duplicate that effort either.
-</p>
-<p>
-Third, in a Model 2 application, most of the formatting can be handled in the ActionForms (or in the business tier),
-so all the tag has to do is spit out a string.
-This leads to better reuse since the same "how to format" code does not need to be repeated in every instance.
-You can "say it once" in a JavaBean and be done with it.
-</p>
-</subsection>
-
-<a name="layout"/>
-<subsection name="Why doesn't Struts Taglib offer more layout options?">
-<p>
-For more flexible placement of error messages,
-try the <a href="http://www.rabago.net/struts/html2/"><html2></a> Tag Library for Struts.
-</p>
-<p>
-Since the Struts tags are open source, you can extend them to provide whatever additional formatting you may need.
-If you are interested in a pre-written taglib that offers more layout options, see the
-<a href="http://struts.application-servers.com">struts-layout taglib</a>.
-</p>
-<p>
-In the same arena, there is a well regarded contributor taglib that can help you create
-<a href="http://sourceforge.net/projects/struts-menu/">Menus for your Struts applications</a>.
-</p>
-<p>
-Another very popular tag library is <a href="http://displaytag.sourceforge.net">DisplayTag</a>.
-DisplayTag is an excellent choice when you have tabular data to present.
-</p>
-</subsection>
-
-<a name="undocumented"/>
-<subsection
- name="If you would like to contribute, here is a list of
+ </source>
+ <p>
+ This is just one of many ways to achieve submitting a form
+ and decoding the
+ intended action. Once you get used to the framework you
+ will find other ways
+ that make more sense for your coding style and
+ requirements. Just remember
+ this example is completely non-functional without
+ JavaScript.
+ </p>
+ <p>
+ Here is a link
+ which utilizes the LookupDispatch action to submit forms
+ with multiple actions
+ without javascript:
+ <a href="http://husted.com/struts/tips/003.html">
+ http://husted.com/struts/tips/003.html</a>
+ </p>
+
+ </subsection>
+
+ <a name="javascript"/>
+ <subsection name="How do I use JavaScript to ...">
+
+ <p>
+ Struts is mainly a server-side technology.
+ We bundled in some JSP tags to expose the framework
+ components to your
+ presentation page, but past that, the usual development
+ process applies.
+ </p>
+
+ <p>
+ Interactive pages require the use of JavaScript.
+ (That's why it was invented.)
+ If you want things popping up or doing this when they
+ click that,
+ you are outside the scope of Struts and back into the web
+ development mainstream.
+ </p>
+
+ <p>
+ You use JavaScript with Struts the same way you use with
+ any presentation
+ page.
+ Since JavaScript is a client-side technology, you can use
+ simple relative
+ references to your scripts.
+ If you need to fire a JavaScript from a HTML control, the
+ Struts HTML tags
+ have properties for the JavaScript events.
+ </p>
+
+ <p>
+ A very good JavaScript resource is Matt Kruse's site at
+ <a href="http://www.mattkruse.com/javascript/">
+ http://www.mattkruse.com/javascript/</a>
+ </p>
+
+ </subsection>
+
+ <a name="reset"/>
+ <subsection
+ name="Do I need to implement reset and set all my form properties to their initial values?">
+ <p>
+ No.
+ You need to set checkbox properties to false if the
+ ActionForm is being retained in session scope.
+ This is because an unchecked box does not submit an
+ attribute.
+ Only checked boxes submit attributes.
+ If the form is in session scope, and the checkbox was
+ checked, there is no way to turn it back off without the
+ reset method.
+ Resetting the properties for other controls, or for a
+ request scope form, is pointless.
+ If the form is in request scope, everything already just
+ started at the initial value.
+ </p>
+ </subsection>
+
+ <a name="scriptlets"/>
+ <subsection
+ name="Can't I just create some of my JavaBeans in the JSP using a scriptlet?">
+ <p>
+ Struts is designed to encourage a
+ <a href="http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html">
+ Model 2/MVC architecture</a>
+ . But there is nothing that prevents you from using Model
+ 1
+ techniques in your JavaServer Pages, so the answer to the
+ question is "Yes, you can".
+ </p>
+ <p>
+ Though, using Model 1 techniques in a Struts application
+ does go against the grain.
+ The approach recommended by most Struts developers is to
+ create and populate whatever
+ objects the view may need in the Action, and then forward
+ these through the request.
+ Some objects may also be created and stored in the session
+ or context,
+ depending on how they are used.
+ </p>
+ <p>
+ Likewise, there is nothing to prevent you from using
+ scriptlets along with JSP
+ tags in your pages. Though, many Struts developers report
+ writing very complex
+ scriplet-free applications and recommend the JSP tag
+ approach to others.
+ </p>
+ <p>
+ For help with Model 1 techniques and scriptlets, you might
+ consider joining the
+ <a href="http://archives.java.sun.com/jsp-interest.html">
+ Javasoft JSP-interest
+ mailing list</a>
+ , where there are more people still using these
+ approaches.
+ </p>
+ </subsection>
+
+ <a name="link"/>
+ <subsection
+ name="Why does the <html:link> tag URL-encode javascript and mailto links?">
+ <p>
+ The <html:link> tag is not intended for use with
+ client-side references like those used to launch
+ Javascripts or email clients.
+ The purpose of link tag is to interject the context (or
+ module) path into the URI so that your server-side links
+ are not dependent on your context (or module) name.
+ It also encodes the link, as needed, to maintain the
+ client's session on the server.
+ Neither feature applies to client-side links, so there is
+ no reason to use the <html:link> tag.
+ Simply markup the client-side links using the standard
+ <a/>
+ tag.
+ </p>
+ </subsection>
+
+ <a name="pager"/>
+ <subsection
+ name="How can I scroll through list of pages like the search results in google?">
+ <p>Many Struts developers use the Pager from the JSPTags
+ site.</p>
+ <p>
+ <a href="http://jsptags.com/tags/navigation/pager/">
+ http://jsptags.com/tags/navigation/pager/</a>
+ </p>
+ </subsection>
+
+ <a name="minimization"/>
+ <subsection
+ name="Why does the option tag render selected=selected instead of just selected?">
+ <p>
+ Attribute minimization (that is, specifying an attribute
+ with no value) is
+ a place where HTML violates standard XML syntax rules.
+ This matters a lot
+ for people writing to browsers that support XHTML, where
+ doing so makes
+ the page invalid.It's much better for Struts to use the
+ expanded syntax,
+ which works the same on existing browsers interpreting
+ HTML, and newer
+ browsers that expect XHTML-compliant syntax. Struts is
+ following the
+ behavior recommended by the
+ <a href="http://www.w3.org/TR/xhtml1/#h-4.5">
+ XHTML specification</a>
+ </p>
+ </subsection>
+
+ <a name="tags"/>
+ <subsection
+ name="Why does Struts Taglib provide for so little formatting?">
+ <p>
+ <em>The Struts tags seem to provide only the most
+ rudimentary functionality.
+ Why is there not better support for date formatting
+ and advanced string handling?</em>
+ </p>
+ <p>
+ Three reasons:
+ </p>
+ <p>
+ First, work started on the JSTL and we didn't want to
+ duplicate the effort.
+ </p>
+ <p>
+ Second, work started on Java Server Faces, and we didn't
+ want to duplicate that effort either.
+ </p>
+ <p>
+ Third, in a Model 2 application, most of the formatting
+ can be handled in the ActionForms (or in the business
+ tier),
+ so all the tag has to do is spit out a string.
+ This leads to better reuse since the same "how to format"
+ code does not need to be repeated in every instance.
+ You can "say it once" in a JavaBean and be done with it.
+ </p>
+ </subsection>
+
+ <a name="layout"/>
+ <subsection
+ name="Why doesn't Struts Taglib offer more layout options?">
+ <p>
+ For more flexible placement of error messages,
+ try the
+ <a href="http://www.rabago.net/struts/html2/"><html2></a>
+ Tag Library for Struts.
+ </p>
+ <p>
+ Since the Struts tags are open source, you can extend them
+ to provide whatever additional formatting you may need.
+ If you are interested in a pre-written taglib that offers
+ more layout options, see the
+ <a href="http://struts.application-servers.com">
+ struts-layout taglib</a>
+ .
+ </p>
+ <p>
+ In the same arena, there is a well regarded contributor
+ taglib that can help you create
+ <a href="http://sourceforge.net/projects/struts-menu/">
+ Menus for your Struts applications</a>
+ .
+ </p>
+ <p>
+ Another very popular tag library is
+ <a href="http://displaytag.sourceforge.net">DisplayTag</a>
+ .
+ DisplayTag is an excellent choice when you have tabular
+ data to present.
+ </p>
+ </subsection>
+
+ <a name="undocumented"/>
+ <subsection
+ name="If you would like to contribute, here is a list of
popular but undocumented questions">
- <ul>
+ <ul>
- <li>Why do my option lists disappear when validation fails?</li>
+ <li>Why do my option lists disappear when validation
+ fails?</li>
- <li>Why can't I disable URL-encoding in the Struts taglibs?</li>
+ <li>Why can't I disable URL-encoding in the Struts
+ taglibs?</li>
- </ul>
-</subsection>
+ </ul>
+ </subsection>
-</section></body></document>
+ </section>
+ </body>
+</document>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org