Java 是否可以从通用对象列表在webapp中生成表单字段?

Java 是否可以从通用对象列表在webapp中生成表单字段?,java,html,jsp,struts2,Java,Html,Jsp,Struts2,情况如下: 我们希望有一个搜索页面,它接收属性对象的有序列表,并根据它们的“类型”(文本输入、下拉列表、复选框)以适当的方式生成和显示它。为了过滤结果,我们还需要处理这些字段的值。我不知道我们如何才能做到这一点,有什么想法/解决方案吗? 这适用于struts2支持的java Web应用程序。是的,这是可能的。我不熟悉struts,但我想不会那么难。一些伪java代码可以帮助您入门: private void init() { for(Attribute a : attributes) {

情况如下: 我们希望有一个搜索页面,它接收属性对象的有序列表,并根据它们的“类型”(文本输入、下拉列表、复选框)以适当的方式生成和显示它。为了过滤结果,我们还需要处理这些字段的值。我不知道我们如何才能做到这一点,有什么想法/解决方案吗?
这适用于struts2支持的java Web应用程序。

是的,这是可能的。我不熟悉struts,但我想不会那么难。一些伪java代码可以帮助您入门:

private void init() {
    for(Attribute a : attributes) {
        SomeWebComponent c = createComponent(a);
        components.put(a, c);
    }
    renderComponents(components.values());
}

private SomeWebComponent createComponent(Attribute a) {
    if(a.getType().equals("text") return createTextInput();
    else if(a.getType().equals("list") return createListInput(a.getItems());
    ...
}

private void performSearch() {
    for(Attribute a : attributes) {
        SomeWebComponent c = components.get(a);;
        searchValues.put(a, c.getValue());
    }
    doSearch(searchValues);
}

虽然这是可能的,但根据我的经验,这几乎总是一个坏主意。从用户体验的角度来看,按照您描述的方式使用完全动态的GUI通常不是一个好主意。如果你正在开发的屏幕是相对静态的,你通常最好只是硬编码布局部分。我以前也经历过这种情况,最终决定回到静态布局。