gf架構之分頁模組(五) - 自訂分頁

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

文章來源:http://gf.johng.cn/597435

由於分頁對象預定義的樣式比較有限,有的時候我們想自訂分頁的樣式(標籤輸出),由於分頁對象的的所有方法都是公開的,這便為開發人員自訂分頁樣式提供了非常高的靈活度。開發人員可以通過以下方式實現自訂分頁內容:

  1. (推薦)對輸出內容進行正則匹配替換實現自訂;
  2. 根據分頁對象公開的方法自行組織分頁內容實現自訂;
  3. 也可以自訂一個分頁對象(繼承於原有分頁對象),使用方法重載的方式來實現自訂;

樣本1,使用第一種方式實現分頁自訂:

package mainimport (    "gitee.com/johng/gf/g"    "gitee.com/johng/gf/g/os/gview"    "gitee.com/johng/gf/g/util/gstr"    "gitee.com/johng/gf/g/net/ghttp"    "gitee.com/johng/gf/g/util/gpage")// 分頁標籤使用li標籤包裹func wrapContent(page *gpage.Page) string {    content := page.GetContent(4)    content  = gstr.ReplaceByMap(content, map[string]string {        "<span"  : "<li><span",        "/span>" : "/span></li>",        "<a"     : "<li><a",        "/a>"    : "/a></li>",    })    return "<ul>" + content + "</ul>"}func main() {    s := ghttp.GetServer()    s.BindHandler("/page/custom2/*page", func(r *ghttp.Request){        page      := gpage.New(100, 10, r.Get("page"), r.URL.String(), r.Router.Uri)        content   := wrapContent(page)        buffer, _ := gview.ParseContent(`        <html>            <head>                <style>                    a,span {padding:8px; font-size:16px;}                    div{margin:5px 5px 20px 5px}                </style>            </head>            <body>                <div>{{.page}}</div>            </body>        </html>        `, g.Map{            "page" : gview.HTML(content),        })        r.Response.Write(buffer)    })    s.SetPort(10000)    s.Run()}

執行後,頁面輸出結果為:

樣本2,使用第二種方式實現分頁自訂:

package mainimport (    "gitee.com/johng/gf/g/os/gview"    "gitee.com/johng/gf/g/net/ghttp"    "gitee.com/johng/gf/g/util/gpage")// 自訂分頁名稱func pageContent(page *gpage.Page) string {    page.NextPageTag  = "NextPage"    page.PrevPageTag  = "PrevPage"    page.FirstPageTag = "HomePage"    page.LastPageTag  = "LastPage"    pageStr := page.FirstPage()    pageStr += page.PrevPage()    pageStr += page.PageBar("current-page")    pageStr += page.NextPage()    pageStr += page.LastPage()    return pageStr}func main() {    s := ghttp.GetServer()    s.BindHandler("/page/custom/*page", func(r *ghttp.Request) {        page      := gpage.New(100, 10, r.Get("page"), r.URL.String(), r.Router.Uri)        buffer, _ := gview.ParseContent(`        <html>            <head>                <style>                    a,span {padding:8px; font-size:16px;}                    div{margin:5px 5px 20px 5px}                </style>            </head>            <body>                <div>{{.page}}</div>            </body>        </html>        `, g.Map{            "page" : gview.HTML(pageContent(page)),        })        r.Response.Write(buffer)    })    s.SetPort(8199)    s.Run()}

執行後,頁面輸出結果為:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.