java - Java servlet 未接收请求属性
问题描述
我目前正在开发一个网络应用程序,我想在其中更新用户操作是否成功。我试图通过设置请求属性并从一个 servlet 转发到下一个来实现这一点。但是,该属性在接收控制器中始终为空。
设置属性的代码块:
try {
updateXRef(request, response, cmds);
} catch (Exception e) {
request.setAttribute("results", "Error encountered. Contact system administrator.");
push(request, response);
}
request.setAttribute("results", "Update Successful");
push(request, response);
}
else {
push(request, response);
}
发送到另一个 servlet 的方法:
private void push(HttpServletRequest request, HttpServletResponse response) {
String url = "/PushServer";
try {
request.getServletContext().getRequestDispatcher(url).forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
以及处理请求的 servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(FileFactory.getFileOperationsObject() == null || request.getParameterValues("input") == null) {
initiliaze(request, response);
String url = "/Display.jsp";
request.setAttribute("xRefFile", FileFactory.getXRefFileObjects());
request.setAttribute("platforms",FileFactory.getUniqueSortedPlatforms());
request.setAttribute("showModal", 0);
if(request.getParameter("results") == null) {
request.setAttribute("results", "Update Pending");
}
request.getServletContext().getRequestDispatcher(url).forward(request, response);
}
我唯一的猜测是正在以某种方式生成一个新请求。如果这确实是正在发生的事情 - 我该如何避免它?
解决方案
问题是方法选择。
request.getParameter("yourAttributeName")
仅适用于检索表单数据 ( <form></form>
) - 也就是来自 .jsp 页面的数据 - 以及查询参数。
如果希望从一个 Java servlet向另一个 Java servlet发送信息,如上面的代码,必须使用:
request.getAttribute("myAttributeName");
推荐阅读
- reactjs - 如何在带有样式组件的伪元素上传递道具?
- javascript - onClick 事件永远不会在 React Child 中触发
- mysql - 替代 MySQL 中的 MINUS 子句?
- rust - JSON Web 令牌的 RSA 密钥对签名和验证
- android - Android Studio 注销:清除保存的首选项 kotlin
- algorithm - 配对比较算法设计
- javascript - Javascript 表单立即清除并闪现一个答案
- mysql - MySQL查询内连接逆?
- javascript - 获取满足高/低温范围和降水的城市列表
- oracle-apex - Oracle Apex - 在动态操作中一次刷新即可刷新所有子区域