There are two versions of <html:xxx> tags: The regular version and the Struts-el version. It looks like your previous project was using the strut-el version, and your current project is using the regular version.
To use the struts-el version of the tags, place the following in your JSP, replacing the other html tag definition:
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html-el"prefix="html"%>
Also, make sure the struts-el.jar file is in your WEB-INF/lib directory.
Once these changes are in place,
you should be able to insert an EL expression in any of your html tag attributes that accept run-time expressions.
Now that I've hopefully answered your question, please indulge me as I go beyond the parameters of your question.
As I see it, the only reason to use the <html:text> tag as opposed to a plain old <input type="text"> tag is that the <html:text> tag automatically populates the value attribute. Using your example, Struts is already going to set the value attribute of this tag to the value of myForm.getUserName(). If you're not going to use the Struts standard practice of populating the form bean property in the action that forwards to the JSP, you might as well just write:
<input type="text" name="userName" value='<c:out value="${person.firstName}"/>' >
When the form is submitted, Struts will still populate the myForm.userName property, because it is the name of the input that Struts uses to match it up to a form bean property.