【发布时间】:2014-10-13 13:20:20
【问题描述】:
我正在开发一个使用 strust2 框架、jsp、java 和 cayenne 作为 orm 的 Web 应用程序。我对所有这些技术都很陌生,包括 ajax 和 jquery。我必须创建一个 jsp 页面,其中用户从下拉列表中选择一个控件(文本框、标签、组合框、下拉列表)。它选择和提交的任何内容都应该在上面的同一页面上创建。 如果我也能管理它们的尺寸,那就太好了。
谢谢
【问题讨论】:
我正在开发一个使用 strust2 框架、jsp、java 和 cayenne 作为 orm 的 Web 应用程序。我对所有这些技术都很陌生,包括 ajax 和 jquery。我必须创建一个 jsp 页面,其中用户从下拉列表中选择一个控件(文本框、标签、组合框、下拉列表)。它选择和提交的任何内容都应该在上面的同一页面上创建。 如果我也能管理它们的尺寸,那就太好了。
谢谢
【问题讨论】:
在您的服务类中,您可以在一个数组中添加您希望在下拉列表中显示的所有组件。就这样
ArrayList<String> htmlControls = new ArrayList<>();
htmlControls.add("input");
htmlControls.add("textarea");
htmlControls.add("checkbox");
然后将此数组列表添加到 HTTP session 对象中,如
session.setAttribute("htmlCtrls",htmlControls);
在您的 JSP 中,您可以使用 JSTL for-each loop 创建动态下拉列表。
<c:forEach var="controls" items="${session.htmlCtrls}">
<options><c:out value="${controls}"/></options>
</c:forEach>
使用 JQuery 在HTML select element 上应用onChange() 事件
<script>
$( "select" ).change(function () {
var str = "";
$( "select option:selected" ).each(function() {
str = $( this ).text();
});
if(str == "input")
$( "div" ).append("<input type='text' name='textbox1' value='' />");
else if(str == "textarea")
$( "div" ).append("<input type='textarea' name='textarea1' value='' />");
// ...
})
.change();
</script>
您可以将 class 或 id 添加到每个 html 控件,并使用 JQuery 或外部 css 将 css 动态应用于它们。
希望这会对你有所帮助。
【讨论】: