forms - servlet - recibir parametros en jsp
¿Cómo puedo conservar los valores de campo de formulario HTML en JSP después de enviar el formulario a Servlet? (2)
Para la declaración de selección tal vez solo puede usar javascript.
document.getElementById(''baz'').value = ''${param.baz}'';
Después de enviar datos en el HTML desde, un servlet agrega estos datos a mi base de datos y reenvía un mensaje de resultado a una página JSP. Deseo conservar los valores enviados inicialmente en el formulario después del reenvío.
¿Es sensato hacer un objeto en un servlet y agregar todos los parámetros que recibo y enviarlo con una solicitud a JSP? ¿Hay alguna otra forma mejor?
Puede acceder a los parámetros de solicitud de valor único por ${param}
.
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<input name="foo" value="${fn:escapeXml(param.foo)}">
<textarea name="bar">${fn:escapeXml(param.bar)}</textarea>
...
<input type="radio" name="faz" value="a" ${param.faz == ''a'' ? ''checked'' : ''''} />
<input type="radio" name="faz" value="b" ${param.faz == ''b'' ? ''checked'' : ''''} />
<input type="radio" name="faz" value="c" ${param.faz == ''c'' ? ''checked'' : ''''} />
...
<select name="baz">
<option value="a" ${param.baz == ''a'' ? ''selected'' : ''''}>label a</option>
<option value="b" ${param.baz == ''b'' ? ''selected'' : ''''}>label b</option>
<option value="c" ${param.baz == ''c'' ? ''selected'' : ''''}>label c</option>
</select>
Tenga en cuenta que JSTL fn:escapeXml()
es necesario para evitar ataques XSS. Consulte también la prevención XSS en la aplicación web JSP / Servlet .
Puede acceder a los parámetros de solicitud de múltiples valores por ${paramValues}
y EL 3.0 streams.
<input type="checkbox" name="far" value="a" ${paramValues.far.stream().anyMatch(v->v == ''a'').get() ? ''checked'' : ''''} />
<input type="checkbox" name="far" value="b" ${paramValues.far.stream().anyMatch(v->v == ''b'').get() ? ''checked'' : ''''} />
<input type="checkbox" name="far" value="c" ${paramValues.far.stream().anyMatch(v->v == ''c'').get() ? ''checked'' : ''''} />
...
<select name="boo" multiple>
<option value="a" ${paramValues.boo.stream().anyMatch(v->v == ''a'').get() ? ''selected'' : ''''}>label a</option>
<option value="b" ${paramValues.boo.stream().anyMatch(v->v == ''b'').get() ? ''selected'' : ''''}>label b</option>
<option value="c" ${paramValues.boo.stream().anyMatch(v->v == ''c'').get() ? ''selected'' : ''''}>label c</option>
</select>