【发布时间】:2012-12-07 14:15:28
【问题描述】:
我在一个 jsp 页面上,我正在对一个 servlet 进行 ajax 调用,作为回报,它提供了要在页面上显示的完整 html 代码。它工作正常,但在 servlet 文件中看起来杂乱无章,有多个 printWriter.write(...) 行,其中包含 html 代码。由于我必须通过 servlet 创建大型 html 代码,因此很难维护。有没有其他合适/更好的方法来做到这一点?我在 servlet 中结合了编写 html 行和逻辑,很难将它们分开。
jsp页面中的ajax调用:
$.ajax({
type: 'POST',
url: 'myServlet',
data: requestData,
dataType: "text",
}).done(function(responseData) {
$(divId).html(responseData);
});
servlet 类的一些代码:
.....
String username = user.getName();
if (username != null && !username.trim().isEmpty())
username = username.substring(0, username.indexOf(" "));
else
username = "";
printWriter.write("<span id=\"username_"+i+"\" style=\"display: none;\">"+ username +"</span>");
printWriter.write("<form action=\"\" method=\"post\" name=\"userClickForm_"+i +"\" id=\"userClickForm_"+i +"\">");
printWriter.write(" <input type=\"hidden\" name=\"userId\" value=\""+userId +"\"/>");
printWriter.write("</form>");
......
混合html代码和业务逻辑的主要原因是我必须根据条件和循环结构提供div id。
【问题讨论】:
-
一个简单的解决方案是将html页面写入文件并使用InputStream循环检索它
-
@Bhavik:这是一个非常糟糕的建议。如果已经为此发明了 JSP,为什么还要重新发明轮子呢?它还允许更轻松地与 EL 的作用域属性和 JSTL 的输出流控制进行交织。
-
@BalusC :我对 ajax 和 JSTL 了解不多。我们如何访问由 ajax 响应发送的作用域变量?出于这个原因,我提出该建议的主要目的是
It becomes hard to maintain的 OP。所以如果他从文件中读取,维护文件会很容易
标签: java html ajax jsp servlets