The best practice in a Struts application is to use the struts html tags (html:form, html:text, etc). If you use these tags, Struts will automatically repopulate the values when a validation error causes the page to be redisplayed.
Originally posted by Erap Estrada: Is it ok to use both JSTL and Struts taglib in the same application?
Yes, absolutely. Whenever both tag libraries perform the same function, I prefer to use JSTL. However, JSTL has no equivalent to the html:xxx tags. These were made specifically to interact with a Struts ActionForm bean, and there is nothing in JSTL that will do this.
As far as best practices go, just do some research on the web and you'll find plenty of good articles. Here are a few of my favorites: