2016-04-23 4 views
0

Я новичок, чтобы пойти и испытать beego.Не удается разобрать данные формы из beego

Я пытаюсь получить размещены данные формы из:

<form action="/hello" method="post"> 
    {{.xsrfdata}} 
    Title:<input name="title" type="text" /><br> 
    Body:<input name="body" type="text" /><br>  
    <input type="submit" value="submit" /> 
    </form> 

К контроллеру:

type HelloController struct { 
    beego.Controller 
} 


type Note struct { 
    Id int  `form:"-"` 
    Title string `form:"title"` 
    Body string `form:"body"`    
} 

func (this *HelloController) Get() { 
    this.Data["xsrfdata"]= template.HTML(this.XSRFFormHTML()) 
    this.TplName = "hello.tpl" 
} 

func (this *HelloController) Post() { 
    n := &Note{} 
    if err := this.ParseForm(&n); err != nil {  
      s := err.Error() 
      log.Printf("type: %T; value: %q\n", s, s)    
    } 

    log.Printf("Your note title is %s" , &n.Title) 
    log.Printf("Your note body is %s" , &n.Body) 
    this.Ctx.Redirect(302, "/")  
} 

Но вместо того, чтобы строковые значения вводятся в поле я получаю:

Your note title is %!s(*string=0xc82027a368) 
Your note body is %!s(*string=0xc82027a378) 

Я следовал за the docs по запросу обработки, но оставил неизвестным, почему не может опубликовать str ь.

+0

вы получаете адрес указателя, что о, если вы измените log.Printf ("Ваше название банкноты% s", & n.Title) для этого -> log.Printf («Ваше название заметки -% s», n.Title) – chespinoza

+0

Затем я получаю такие вещи, как «Заголовок вашей заметки: 0xc820267d18' – Karlom

+0

Но, проверяя документацию, как определить структуру (в вашем случае Примечание) является как тип структуры, а не как указатель (&) для этой структуры, а затем в вашем коде вы должны быть n: = Примечание {} – chespinoza

ответ

1

Из документации, как определить-структуру приемника следует использовать тип структуры, а не указатель на эту структуру:

func (this *MainController) Post() { 
    u := User{} 
    if err := this.ParseForm(&u); err != nil { 
     //handle error 
    } 
} 

Затем в контроллере, то, что должно быть лучше, если вы. .

func (this *HelloController) Post() { 
    n := Note{} 
    ... 
} 

Более подробная информация о указателях в ходе: https://tour.golang.org/moretypes/1