@GetMapping("/auto-upgrade/{id}")
public String followJob(Model model, @PathVariable String id) {
boolean stopMessageAlreadyThere = model.asMap().containsKey("stopMessage");
if (!stopMessageAlreadyThere) {
model.addAttribute("stopMessage", null);
}
//do some stuff
return "dashboard";
}
<form action="#" th:action="@{/auto-upgrade/stop}" th:object="${stopRequest}" method="post" th:if="${#strings.toString(upgradeState.upgradeStatus) == 'RUNNING'}">
<input style="visibility: hidden" th:field="*{jobId}" th:value="${upgradeState.id}"/>
<p>Your mail address: <input type="email" id="stoppingEmail" oninput="saveLastInput()" th:field="*{userEmail}"></p>
<p><input type="submit" value="Request stop upgrade" />
</form>
<div th:if="${stopMessage != null}">
<p>Message for stop command: <b th:text="${stopMessage}"></b></p>
</div>
当我呈现视图时,stopmessage
是null
,因为是我这样插入它。
如果我提交表单,我将执行以下postmapping
处理程序:
@PostMapping("/auto-upgrade/stop")
public String stopJob(@ModelAttribute StopRequest stopRequest, Model model) {
try {
//something that may fail
model.addAttribute("stopMessage", "Stop request accepted");
} catch (UpgradeNotRunningException | NotInGracePeriodException | StopUpgradeException e) {
model.addAttribute("stopMessage", "FAILED TO STOP: " + e.getMessage());
}
return "redirect:/auto-upgrade/" + stopRequest.getJobId();
}
所以基本上我总是要添加一个`stopmessage,不管是成功还是失败。
如何检索设置到另一个处理程序中的属性值?用胸腺嘧啶有可能吗?
注意:暂时,我将stopmessage
设置为控制器类的一个字段,并在处理程序周围设置null
/not null,以便始终能够看到它的值。这是一个解决办法,但似乎不是正确的做法。因为我是个新手,所以我很乐意听到处理这类案件的正确方法。
您需要使用RedirectAttributes
:
@PostMapping("/auto-upgrade/stop")
public String stopJob(@ModelAttribute StopRequest stopRequest,
Model model,
RedirectAttributes redirectAttributes) {
try {
//something that may fail
redirectAttributes.addFlashAttribute("stopMessage", "Stop request accepted");
} catch (UpgradeNotRunningException | NotInGracePeriodException | StopUpgradeException e) {
redirectAttributes.addFlashAttribute("stopMessage", "FAILED TO STOP: " + e.getMessage());
}
return "redirect:/auto-upgrade/" + stopRequest.getJobId();
}
这样,stopmessage
在重定向之后就可用了。(请注意,如果用户在重定向后手动刷新页面,则它们将丢失)
更多信息请参见https://www.baeldung.com/spring-web-flash-attributes。
我在页面上有输入字段和提交按钮。 这里是jQuery代码: 我想防止模糊,如果从输入字段点击提交div,但想允许它,如果从输入字段点击页面的其他部分。我无法使用“提交”按钮。 我已竖起了小提琴。净/405kzboh/1 但是现在我甚至不明白为什么点击事件没有在模糊事件之前触发,如果有人从输入点击提交!
我是Camunda的新手,没有找到任何教程或参考来解释如何实现以下目标: 当开始一个过程时,我希望用户在发票中添加任意数量的项目。在下一个用户任务中,所有这些项目及其数量都应该打印给批准数据的人。 我还不知道如何在一个过程和它的变量之间建立1:n的关系。我需要为每个项目启动子流程吗?或者我必须使用自定义Java对象吗?如果是这样,我如何从任务列表中将表单元素映射到这样的对象?
我试图抓住无效的json,而解析它与jiffy在牛仔web套接字处理程序。如果json是有效的/无效的,我想转发一个适当的消息到,它将回复客户端。这是我的代码。 这会导致运行时异常。 12:07:48.406[错误]牧场侦听器http已连接到进程 那我该怎么做呢?
问题内容: 我试图在Go中启动一个HTTP服务器,该服务器将使用自己的处理程序来提供自己的数据,但与此同时,我想使用默认的http FileServer来提供文件。 我在使FileServer的处理程序在URL子目录中工作时遇到问题。 该代码不起作用: 我期望在localhost:1234 / files /中找到本地目录,但是它返回一个。 但是,如果我将文件服务器的处理程序地址更改为/,它将起作
我知道有一些关于这个问题的问题和帖子/文章,但从我的新手角度来看,不完全是这样。问题是,我有一个主程序监听一个端口,并将调用重定向到一个特定的处理程序。典型结构: 处理程序类似于: 然后,包含函数foo的一些全局变量,基本上是因为函数共享需要它们(例如,当使用容器/堆实现的优先级队列时,它将从全局距离矩阵中获得Swap函数中的优先级当然是可变的)。以及许多其他例子。总之,全局变量... 问题是,正
问题内容: 我正在开发一个本机android应用程序,其中尝试使用2个开源库。问题是两个库都在各自的库中使用应用程序类。他们正在使用application标签下的“ android:name”在清单文件的相应源代码中注册这些类。问题是如何处理这种情况,因为众所周知,清单文件中只能使用ONE标签。我们是否可以在代码中注册/实例化应用程序类,以便我们在标记中仅提及一个库,而在代码中/实用地提及第二个库