我对春季靴子很新,目前我遇到了困境。
我有2个控制器方法
IndexController.java
@RequestMapping(value="/openxml", params = "btnTransform", method = RequestMethod.POST)
public String transformXml(HttpServletRequest request, Model model) {
try {
String fileContent = request.getParameter("code1").replaceAll("&", "&");
String fileName = request.getParameter("fileName");
InputStream is1 = IOUtils.toInputStream(fileContent,StandardCharsets.UTF_8);
InputStream is2 = IOUtils.toInputStream(fileContent,StandardCharsets.UTF_8);
String htmlString=xmlOperation.simpleTransform(is1, fileName);
if (htmlString.equals("")){
model.addAttribute("message", "Please validate your XML!!");
}
model.addAttribute("htmlString",StringEscapeUtils.escapeHtml4(htmlString));
model.addAttribute("fileContent", fileContent);
model.addAttribute("fileName",fileName);
} catch (Exception e) {
logger.error(e.getMessage());
System.out.println(e.getMessage());
}
return "greeting";
}
@RequestMapping(value="/updatexpath", method=RequestMethod.POST, produces = "application/json")
@ResponseBody
public String updateXPath(@RequestParam("xml") String xml, @RequestParam("xPath") String xPath, @RequestParam("editedText") String editedText){
xml=xml.replaceAll("&", "&");
InputStream is = IOUtils.toInputStream(xml, StandardCharsets.UTF_8);
String editedXml=xmlOperation.updatePara(is, xPath, editedText);
editedXml=editedXml.replaceAll("&", "&");
return editedXml;
}
我在这里做的是从ajax调用updateXPath方法并获取editedXml并更新textarea。之后我想调用transformXml方法(没有任何按钮点击)。可能吗?如果有,怎么样?如果没有,任何工作?
任何帮助将不胜感激......
答案 0 :(得分:1)
一种解决方案可能是在控制器中使用重定向。所以你可以从一个@RequestMapping
跳到另一个。
@Controller
public class DemoController {
@RequestMapping("/")
public String index(){
String xml = "simpleXML";
return "redirect:/transformXML?xml=" + xml;
}
@RequestMapping("/transformXML")
public String transformXML(@RequestParam("xml") String xml){
System.out.println(xml);
//add xml to your model for the textarea.
//transform your xml
return xml;
}
}
点击http://localhost:8080/
会创建一个字符串并重定向到http://localhost:8080/xml
,包括您需要的参数。
如果足以让您在editedXml
之后在textarea中显示transform
,则可以自欺欺人。
答案 1 :(得分:0)
你有很多方法。
第一种方式。在春天使用Async
支持。异步支持可以向执行程序添加Runnable
,这样,您可以在请求中返回响应,并启动任务。这是async guide。并将所有transformXml代码放到service
第二种方式。只需使用javascript发送另一个请求。(我会用这种方式)
就像:
1. send request of updatexpath
2. wait until server response xml
3. update dom and put your xml to textarea
4. send request of transformXml