From: Andrey Mirtchovski
-func viewHandler(w http.ResponseWriter, r *http.Request, title string) {
+func viewHandler(w http.ResponseWriter, r *http.Request) {
+ title, err := getTitle(w, r)
+ if err != nil {
+ return
+ }
p, err := loadPage(title)
if err != nil {
http.Redirect(w, r, "/edit/"+title, http.StatusFound)
@@ -658,10 +662,14 @@ Now let's fix up saveHandler:
-func saveHandler(w http.ResponseWriter, r *http.Request, title string) {
+func saveHandler(w http.ResponseWriter, r *http.Request) {
+ title, err := getTitle(w, r)
+ if err != nil {
+ return
+ }
body := r.FormValue("body")
p := &Page{Title: title, Body: []byte(body)}
- err := p.save()
+ err = p.save()
if err != nil {
http.Error(w, err.String(), http.StatusInternalServerError)
return
@@ -747,6 +755,7 @@ Then we can create a global variable to store our validation regexp:
+var titleValidator = regexp.MustCompile("^[a-zA-Z0-9]+$")
diff --git a/doc/codelab/wiki/wiki.html b/doc/codelab/wiki/wiki.html
index ff2c3088b0..3ddbd96b77 100644
--- a/doc/codelab/wiki/wiki.html
+++ b/doc/codelab/wiki/wiki.html
@@ -477,7 +477,7 @@ redirect the client to the edit Page so the content may be created:
-!./srcextract.bin -src=final.go -name=viewHandler
+!./srcextract.bin -src=final-noclosure.go -name=viewHandler
@@ -539,7 +539,7 @@ Now let's fix up saveHandler:
-!./srcextract.bin -src=final.go -name=saveHandler
+!./srcextract.bin -src=final-noclosure.go -name=saveHandler
@@ -610,7 +610,7 @@ Then we can create a global variable to store our validation regexp:
-!./srcextract.bin -src=final-noclosure.go -name=TitleValidator
+!./srcextract.bin -src=final-noclosure.go -name=titleValidator