我有这段代码:
processRequest(...,...){
String page = "";
if(true){
String str = "hello";
request.setAttribute("str",str);
page = "currentPage#";
}
else{
page = "otherPage";
}
RequestDispatcher rd = requestDispatcher("/",page);
}
在我的JSP上,为了获取servlet属性,我使用它:
<input type = "text" value = "<c out>${str}</c out>">
发生这种情况,
当我使用currentPage#
时,当前页面无法加载,但input
标记的值始终为null
,
但是如果我使用currentPage
(没有#),我会得到页面加载的&#34; hello&#34; 值,我不希望这样做,因为页面和它的内容将刷新。
有人可以帮助我在不加载当前页面的情况下获取str attribute
,还是有任何办法?
答案 0 :(得分:1)
您使用Ajax加载页面的一部分。使用jquery
甚至更容易对于前,
<强> JSP:强>
<script src="http://code.jquery.com/jquery-1.10.2.js"
type="text/javascript"></script>
<script src="js/app-ajax.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$('#userName').blur(function() {
$.ajax({
url : 'GetUserServlet',
tpye: "POST",
data : {
userName : $('#userName').val()
},
success : function(responseText) {
$('#ajaxGetUserServletResponse').text(responseText);
}
});
});
});
</script>
</head>
<body>
<form>
Enter Your Name: <input type="text" id="userName" />
</form>
<br>
<br>
<strong>Ajax Response</strong>:
<div id="ajaxGetUserServletResponse"></div>
在你的servlet中,
String userName = request.getParameter("userName").trim();
if(userName == null || "".equals(userName)){
userName = "Guest";
}
String greetings = "Hello " + userName;
response.setContentType("text/plain");
response.getWriter().write(greetings);
在jsp中提交from时,只会刷新您的ajaxGetUserServletResponse
以显示来自服务器的数据。
答案 1 :(得分:1)
使用jQuery,您可以通过jQuery.ajax()完成此操作; 假设您有一个文本输入:
<input type="text" id="search">
从您的Servlet中,返回您需要的字符串:
String empName = "Test Coder";
PrintWriter out = response.getWriter();
out.println(empName);
您可以像这样调用onClick函数:
$("#search").on("click", function() {
$.ajax({
type: "POST",
url: "YOUR SERVLET NAME",
data: "{empid: " + empid + "}", // what ever the data you need to pass to server to generate yout "String"
success: function(result) {
alert(result.empName); // this should be your String parameter returned from the Servlet.
$("search").val(str); // setting the String value on your text input
console.log(result);
},
error: function(error) {
console.log("error" + error);
}
});
});
这只是一个样本,我没试过。希望这会给你一个明确的路径来实现你的目标..!试着告诉我们。