You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Yariel Ramos Moreno <yr...@ceis.cujae.edu.cu> on 2006/03/08 03:10:24 UTC

Struts 1.1 and IExplorer

Hello:

I'm developing a web application using Struts 1.1 and Tiles. I have a tile for searchs consisting in a JSP with the following code:
.....
<html:form action="/search">
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td colspan="3">Buscar Noticias</td>
        </tr>
        <tr>
            <td valign="top">
                <html:text property="searchText"/>
            </td>
            <td valign="middle" width="40">
                <html:submit property="searchType">
                    <bean:message key="search.go"/>
                </html:submit>
            </td>
        </tr>
        <tr>
            <td colspan="3">
                <html:submit property="searchType">
                    <bean:message key="search.adv"/>
                </html:submit>
            </td>
        </tr>
    </table></td>
</html:form>
.......

I have an ActionForm asociated to it with the definition of searchText property and the get, set and reset methods. Also, there is a LookupDispatchAction defining the mappings according with the selected button. Here is the class:

public class SearchAction extends LookupDispatchAction {
 
 public ActionForward op_search(
           ActionMapping mapping,
           ActionForm form,
           HttpServletRequest request,
           HttpServletResponse response) {
  
           return mapping.findForward("showSearch");
 }
 
 public ActionForward op_advSearch(
           ActionMapping mapping,
           ActionForm form,
           HttpServletRequest request,
           HttpServletResponse response) {
              
           return mapping.findForward("showAdvSearch");
 }
 
 protected Map getKeyMethodMap() {
  Map<String, String> map = new HashMap <String, String> ();
        map.put("", "op_search");
        map.put("search.go", "op_search");
        map.put("search.adv", "op_advSearch");
        
        return (map);
 }
}

The line map.put("", "op_search"); is for the case I press Enter in the input area instead of pressing one of the defined buttons (I'm not sure if it work this way, maybe I don't need it).

When I execute my application in Mozila Firefox, pressing Enter in the input area, it works fine and forwards to showSearch correctly. But when execute it in Internet Explorer, I get the following exception:

SEVERE: Servlet.service() for servlet action threw exception
javax.servlet.ServletException: Request[/search] does not contain handler parameter named searchType
at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:199)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)

What's the problem here? It's mine or it's an Internet Explorer bug with Struts 1.1? Is there another way of doing what I want (calling the correct forward when I press Enter in the input area), something like a default value for my property or another method (searchText)?

I need some help as soon as you can, please.

Thanks in advance.

Re: Struts 1.1 and IExplorer

Posted by Michael Jouravlev <jm...@gmail.com>.
On 3/7/06, Yariel Ramos Moreno <yr...@ceis.cujae.edu.cu> wrote:
> When I execute my application in Mozila Firefox, pressing Enter in the input area, it works fine and forwards to showSearch correctly. But when execute it in Internet Explorer, I get the following exception:
>
> SEVERE: Servlet.service() for servlet action threw exception
> javax.servlet.ServletException: Request[/search] does not contain handler parameter named searchType

Sometimes some browsers (I could not find a system in this) do not
send a submit element when you hit Enter. Sometimes they send the
first submit element on a form.

So, you need to handle situation when no submit buttons is sent. This
would be a "keyboard submit" or "default submit".

Michael.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org