The browser shows me "http 500 error", but once I hit "refresh" everything works. I was confused. So I click "internet option" / "advanced", and unmark "show friendly error msg". then I found there is unhandled exception from this line, so I change it to <html:form action="/submit" > and then the HTTP 500 error disappeared.
Now, why did it always first show 500 error first but once I hit "refresh" everything worked since then ?
I don't know why the strange behavior, but I do know that you don't need to use the encodeURL method in any Struts tags. Struts automatically does encodeURL on all links.