golang html template 사용시 데이터 타입 유의

golang html template 으로 웹 페이지를 처리할때 html 태그나 따옴표(") 가 제대로 처리되지 않았다면...
각 HTML, JS, CSS 등 각 영역에 맞는 데이터 타입을 사용해야 한다.

실행결과 확인 http://play.golang.org/p/VAxw4TpQN_

// author : ysoftman
// encoding : utf-8
// title : html template 사용 테스트
// html 영역에 값 전달시 template.HMTL
// script 영역에 값 전달시 template.JS 데이터 타입을 사용하자
package main

import (
"fmt"
"html/template"
"os"
)

const htmlString = `
<html>
<body>
html template 테스트입니다.

<script>
var val1 = {{.Value1}}
var val2 = {{.Value2}}
var val3 = {{.Value3}}
</script>

val1 = {{.Value1}}
val2 = {{.Value2}}
val3 = {{.Value3}}

</body>
</html>
`

type UserInfo struct {
Value1 int

// string 데이터 타입으로 선언하면
// script 영역에서 quotation(") 가 붙여진다.
// html 영역에서 html 태그가 제대로 표시 되지 않는다.
// value2 string
// value3 string

Value2 template.JS
Value3 template.HTML
}

var userInfo UserInfo

func main() {

tpl, err := template.New("test_template").Parse(htmlString)
if err != nil {
fmt.Println("parse template error ... " + err.Error())
return
}

// userinfo 설정
userInfo.Value1 = 123456789
userInfo.Value2 = "ysoftman"
userInfo.Value3 = `
have a nice day1<br>
have a nice day2<br>
have a nice day3<br>
have a nice day4<br>
`
// html 문서 처리
err = tpl.Execute(os.Stdout, userInfo)
if err != nil {
fmt.Println("execute template error ... " + err.Error())
return
}
}

comments:

댓글 쓰기