I think the answer to the question needs further explanation.
<jsp:setProperty name="mystring" property="*" />
Colin, I don't think that the semantics of jsp:setProperty is what you say:
"Tells the container to set the property named "*" (so all) to <null>"
I think, according to the JSP 2.0 spec (page 143), if property is set to * the tag will:
1) iterate over the current ServletRequest parameters (mystring in this example),
2) match parameter names (mystring) and value type(s) to property names and setter method type(s) (no matches in this example, since in a
String there's no mystring property),
3) set each matched property to the value of the matching parameter (nothing to do, since there was no matches in 2))
So, in my opinion, the tag jsp:setProperty leave the bean mystring untouched and <%=mystring%> should print:
a) If jsp:useBean finds the bean mystring in the page scope: whatever the value of mystring is.
b) else: "", because jsp:useBean instantiates a new bean (using the no-args constructor).
So I think that there's no a totally correct answer among the options A to D.
[ February 28, 2005: Message edited by: Jose Esteban ]