我试图创建一个管理平台,有人可以编辑html文件的文本。
为此我创建了另一个页面,其中我认为我可以将整个html文件加载到textarea中。
我正在使用Thymeleaf和Spring。我想要在textarea中呈现html文本(在stackoverflow中大多数关于此问题的想要渲染html)。
以下是一个例子:
页面(文字)我想进入文本区域:
的index.html:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Login</title>
<link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"
href="../../static/public/css/bootstrap.min.css" />
</head>
<body onload="document.f.username.focus();">
<div class="container">
<div class="navbar">
<div class="navbar-inner">
<a class="brand" href="http://www.thymeleaf.org"> Thymeleaf -
Plain </a>
<ul class="nav">
<li><a th:href="@{/}" href="home.html"> Home </a></li>
</ul>
</div>
</div>
<div class="content">
<p th:if="${param.logout}" class="alert">You have been logged out</p>
<p th:if="${param.error}" class="alert alert-error">There was an error, please try again</p>
<h2>Login with Username and Password</h2>
<form id="login" name="login" th:action="@{/j_spring_security_check}" action="/doLogin" method="POST">
<fieldset>
<input type="text" name="username" value="" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
</fieldset>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" />
<input type="submit" id="login" value="Login" class="btn btn-primary" />
</form>
</div>
</div>
</body>
我希望用户能够完全编辑,所以我想将这个文本包含在这样的texarea中:
<div class="content">
<h1>Editing page index.html</h1>
<h2>HTML code: </h2>
<textarea th:text="${param.clic[0]}">//Here is where i need help
</textarea>
</div>
我可以做我想做的事吗?
谢谢你的帮助!如果您需要更多详细信息,我将很乐意给予他们
答案 0 :(得分:0)
您可以尝试使用带有html的文本的th:utext
标记。
以下是官方文档 - unescaped text
答案 1 :(得分:0)
事情并没有使用:文本也没有:但是我所做的就是将document.html作为java上的文本文件阅读,然后将文本放在textarea上。我使用了大部分代码:http://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example
这里我将完整的代码留在java:
@Value("${application.thymeleaf.templatesdir}")
String path;
@RequestMapping(method = RequestMethod.GET)
public String home(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Clic is added as parameter on the url
String documento = path + request.getParameter("clic") + ".html";
StringBuilder cad = new StringBuilder();
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(documento));
while ((sCurrentLine = br.readLine()) != null) {
cad.append(sCurrentLine + "\n");
}
} catch (IOException e) {
//Exception...
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException ex) {
//Error
}
}
model.put("text", cad.toString());
return "admin/editaUnaPagina";
在HTML上我有这个:
<form th:action="@{/saveHtml}" method="POST">
<h2>HTML code:</h2>
<textarea class="textarea" th:text="${text}" name="text">
</textarea>
<input type="submit" value="SAVE"/>
<input type="hidden" name="clic" th:value="${param.clic[0]}" />
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" />
</form>
&#34; clic&#34; java代码上的参数的名称与文档的名称完全相同。
application.thymeleaf.templatesdir的值是由我在我的application.properties上建立的,它看起来像这样:
application.thymeleaf.templatesdir = resources / templates /