在textarea中包含html页面

时间:2016-02-09 23:15:40

标签: javascript html spring thymeleaf

我试图创建一个管理平台,有人可以编辑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>

我可以做我想做的事吗?

谢谢你的帮助!如果您需要更多详细信息,我将很乐意给予他们

2 个答案:

答案 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 /