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 &lt;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 &lt;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 &lt;html:html xhtml="true&gt; or &lt;html:xhtml/&gt; 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>&lt;html:submit&gt;</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 &lt;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 &lt;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 &lt;html:form&gt; block and 'myForm'
-    is picked up from the struts-config.xml name field of the action.
-</p>
-<source>
-    &lt;a href='javascript:void(document.forms["myForm"].submit()&gt;My Link&lt;/a&gt;
-</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>
-        &lt;input type='hidden' value='myAction' /&gt;
-        &lt;input type='button' value='Save Meeeee'
-            onclick='document.forms["myForm"].myAction.value="save";
-                     document.forms["myForm"].submit();' /&gt;
-        &lt;input type='button' value='Delete Meeeee'
-            onclick='document.forms["myForm"].myAction.value="delete";
-                     document.forms["myForm"].submit();' /&gt;
-</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
+                            &lt;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 &lt;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 &lt;html:html xhtml="true&gt; or &lt;html:xhtml/&gt;
+                    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>&lt;html:submit&gt;</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 &lt;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 &lt;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 &lt;html:form&gt;
+                    block and 'myForm'
+                    is picked up from the struts-config.xml name field of the
+                    action.
+                </p>
+                <source>
+                    &lt;a
+                    href='javascript:void(document.forms["myForm"].submit()&gt;My
+                    Link&lt;/a&gt;
+                </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>
+                    &lt;input type='hidden' value='myAction' /&gt;
+                    &lt;input type='button' value='Save Meeeee'
+                    onclick='document.forms["myForm"].myAction.value="save";
+                    document.forms["myForm"].submit();' /&gt;
+                    &lt;input type='button' value='Delete Meeeee'
+                    onclick='document.forms["myForm"].myAction.value="delete";
+                    document.forms["myForm"].submit();' /&gt;
+                </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 &lt;html:link> tag URL-encode javascript and mailto links?">
-<p>
-The &lt;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 &lt;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/">&lt;html2&gt;</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 &lt;html:link> tag URL-encode javascript and mailto links?">
+                <p>
+                    The &lt;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 &lt;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/">&lt;html2&gt;</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