我需要填充列表框,文本框的值......几乎所有来自我的servlet的表单输入元素。因为将对象发送到JSP页面并在那里填充输入元素的值(使用任何标记库JSTL),我发现它很难。
无论如何都要从servlet本身设置所有输入元素值?例如,如果我需要设置textfield的值,那么在我的servlet中
TextFieldBean tf = new TextFieldBean("userName");
tf.setValue("Test");
在我的jsp页面中
<input type="text" name="userName">
答案 0 :(得分:1)
这就是所有MVC框架(我所知道的)允许做的事情。这是Stripes的一个例子:
// in the Stripes action:
public Resolution displayForm() {
this.userName = "Test";
return new ForwardResolution("/displayForm.jsp");
}
// in the JSP
<s:form beanClass="com.foo.bar.SubmitFormAction" method="post">
User Name : <s:text name="userName"/>
</s:form>
MVC框架有自己的学习曲线,但它们提供了巨大的服务(数据绑定就是其中之一)。选择一个并学习:Stripes,Spring MVC,Play,...有几十种。我喜欢Stripes的简洁和优秀的设计。
答案 1 :(得分:1)
如果您出于某种原因不想使用MVC框架,请使用Apache Commons BeanUtils。
BeanUtils.populate(bean, request.getParameterMap());
就是这样。您只需要确保bean属性名称与请求参数名称完全匹配。
然而,MVC框架在应用请求参数之后提供了更多其他优势,例如转换,验证,事件监听,执行操作,动态渲染等。因此,您可以只使用一个一体化的MVC框架,而不是将几个独立的库拼凑在一起以使生活更轻松。除了JB Nizet提到的基于请求的MVC框架之外,还有基于组件的MVC框架,它更抽象(消除HTML / CSS / JS boilperlate),例如JSF。