英文:
Nested template in Revel not loading properly
问题
当我调用一个嵌套模板时,{{template "partials/mirror.html" .}}
,它抛出以下错误:
results.go:232: 模板执行错误(在App/index.html中):html/template:App/index.html:"\"在属性名称中:" class\"quote-component\" id=\"quot"
如果我为模板App/index.html
创建一个专门的控制器,像这样:
package controllers
import "github.com/revel/revel"
type Mirror struct {
*revel.Controller
}
func (m Mirror) Index() revel.Result {
return m.Render()
}
我仍然得到以下错误:
results.go:232: 模板执行错误(在Mirror/index.html中):html/template:Mirror/index.html:"\"在属性名称中:" class\"quote-component\" id=\"quot"
这是mirror.html
的内容:
<!-- AUTH STATES -->
<section class="auth-states">
<!-- FACE DETECTED W/IN RANGE -->
{{template "partials/faceClose.html" .}}
<!-- USER DETECTED -->
{{template "partials/userDetected.html" .}}
<!-- NON USER DETECTED -->
{{template "partials/nonUserDetected.html" .}}
<!-- TIME OUT LOGS USER OUT -->
{{template "partials/loggingOut.html" .}}
</section>
<div class="clear eyelevel">
<!-- WEATHER-->
{{template "partials/weather.html" .}}
<!-- TIMELY CONTENT: TIMESTAMP AND ALERTS -->
<div class="timely-content">
<!-- TIMESTAMP -->
{{template "partials/timestamp.html" .}}
<!-- EMOTION -->
{{template "partials/emotion.html" .}}
</div>
</div>
<img id="shot-preview"/>
<!-- LOW PRIORITY CONTENT -->
<section class="low-pri-content auth-content">
<h2 class="logged-in-stamp">
Here's the scoop, <span id="logged-in-name"></span>:
</h2>
{{template "partials/traffic.html" .}}
{{template "partials/stocks.html" .}}
{{template "partials/newsFeed.html" .}}
</section>
<div id="video-hidden" aria-hidden="true">
<video id="cameraPreview" class="cameraPreview"></video>
</div>
<script src="https://code.jquery.com/jquery-2.2.1.js"></script>
<script src="https://cdn.jsdelivr.net/momentjs/2.11.2/moment.min.js"></script>
<script src="/public/js/weather.js"></script>
<script src="/public/js/stock.js"></script>
<script src="/public/js/news.js"></script>
<script src="/public/js/traffic.js"></script>
<script src="/public/js/mirror.js"></script>
<script src="/public/js/authenticate.js"></script>
该应用程序的结构遵循Revel的建议,该项目只是将此项目从Node迁移到Go,并使用Revel。
我的问题是:这个错误消息是什么意思?它总是加载mirror.html
文件的前4行,而不管前4行是什么。
英文:
When I call a nested template, {{template "partials/mirror.html" .}}
, it throws this error:
results.go:232: Template Execution Error (in App/index.html): html/template:App/index.html: "\"" in attribute name: " class\"quote-component\" id=\"quot"
If I create a controller specifically for the template App/index.html
is calling, like this:
package controllers
import "github.com/revel/revel"
type Mirror struct {
*revel.Controller
}
func (m Mirror) Index() revel.Result {
return m.Render()
}
I still get:
results.go:232: Template Execution Error (in Mirror/index.html): html/template:Mirror/index.html: "\"" in attribute name: " class\"quote-component\" id=\"quot"
Here are the contents of mirror.html
:
<!-- AUTH STATES -->
<section class="auth-states">
<!-- FACE DETECTED W/IN RANGE -->
{{template "partials/faceClose.html" .}}
<!-- USER DETECTED -->
{{template "partials/userDetected.html" .}}
<!-- NON USER DETECTED -->
{{template "partials/nonUserDetected.html" .}}
<!-- TIME OUT LOGS USER OUT -->
{{template "partials/loggingOut.html" .}}
</section>
<div class="clear eyelevel">
<!-- WEATHER-->
{{template "partials/weather.html" .}}
<!-- TIMELY CONTENT: TIMESTAMP AND ALERTS -->
<div class="timely-content">
<!-- TIMESTAMP -->
{{template "partials/timestamp.html" .}}
<!-- EMOTION -->
{{template "partials/emotion.html" .}}
</div>
</div>
<img id="shot-preview"/>
<!-- LOW PRIORITY CONTENT -->
<section class="low-pri-content auth-content">
<h2 class="logged-in-stamp">
Here's the scoop, <span id="logged-in-name"></span>:
</h2>
{{template "partials/traffic.html" .}}
{{template "partials/stocks.html" .}}
{{template "partials/newsFeed.html" .}}
</section>
<div id="video-hidden" aria-hidden="true">
<video id="cameraPreview" class="cameraPreview"></video>
</div>
<script src="https://code.jquery.com/jquery-2.2.1.js"></script>
<script src="https://cdn.jsdelivr.net/momentjs/2.11.2/moment.min.js"></script>
<script src="/public/js/weather.js"></script>
<script src="/public/js/stock.js"></script>
<script src="/public/js/news.js"></script>
<script src="/public/js/traffic.js"></script>
<script src="/public/js/mirror.js"></script>
<script src="/public/js/authenticate.js"></script>
The structure of the app follows the Revel recommendations, the project itself is just migrating this project from Node to Go using Revel.
My question is: what does that error message mean? It always loads the top 4 lines of the mirror.html
file, regardless of what the top 4 lines are.
答案1
得分: 1
错误不在mirror.html
中,而是在index.html
中:
> results.go:232: 模板执行错误(在Mirror/index.html中):html/template:Mirror/index.html: 属性名中的“"\”:class"quote-component" id="quot"
当指定某个元素的class
属性时,你简单地忘记了等号'='
,例如你写成了:
<span class"quote-component" id="quot">...
可以查看这个简单的示例进行验证:
const templ = `<html><body>
<span class"quote-component" id="quot">Bad syntax</span>
</body></html>`
t := template.Must(template.New("").Parse(templ))
err := t.Execute(os.Stdout, nil)
fmt.Println(err)
输出:与你的几乎相同(在Go Playground上尝试一下):
html/template: "\"" in attribute name: " class\"quote-component\" id=\"quot"
英文:
The error is not in mirror.html
but in index.html
:
> results.go:232: Template Execution Error (in Mirror/index.html): html/template:Mirror/index.html: """ in attribute name: " class"quote-component" id="quot"
You simply left out an equal sign '='
when specifying the class
attribute of some element, for example you wrote:
<span class"quote-component" id="quot">...
See this simple example to verify:
const templ = `<html><body>
<span class"quote-component" id="quot">Bad syntax</span>
</body></html>`
t := template.Must(template.New("").Parse(templ))
err := t.Execute(os.Stdout, nil)
fmt.Println(err)
Output: almost identical to yours (try it on the Go Playground):
html/template: "\"" in attribute name: " class\"quote-component\" id=\"quot"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论