[精讚] [會員登入]
994

【Wickct】如何製作一個簡單的動態響應頁面和傳遞參數至其他頁面

身為一個後端架構程式,這個功能當然是非常重要之一

分享此文連結 //n.sfs.tw/15679

分享連結 【Wickct】如何製作一個簡單的動態響應頁面和傳遞參數至其他頁面@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2022-03-16 18:06:05 最後編修
2022-03-12 05:02:09 By 過路君子
 

哈囉大家好,這裡是跑去看了一下別人嵌入式系統的小編過路君子

沒想到小小一台的機器可以達成非常多的事情,還有自己專屬的OS呢

 

 

官方文檔:Wicket 9.x Reference Guide

等等文章出現的所有程式碼皆由官方文檔所提供的範例做修改,如果需要更詳細的說明可以點擊上方網址前往察看。

 

那假設我們在同個目錄下有兩個網頁 hello.html 和 another.html。

(所有圖片點擊都可以放大、變高清)

這篇的目錄結構是承接這篇:【Maven】[Wicket](Java) 如何部署Wicket到Wildfly內@小編過路君子 ,這邊只貼出不同之處而已,完整的目錄結構要到那篇去看喔。

 

 

使用 POST 做動態響應

hello.html

<!doctype html>
<html>
    <head>
        <title>Wicket GET</title>
    </head>

    <body>
        <p><a wicket:id="gotoAnother">Go to another page</a></p>

        <form wicket:id="userSend">
            <p><input type="text" wicket:id="userInput" /><br />
            <input type="submit" value="Send" /></p>
        </form>
    </body>
</html>

hello.java

package taiwan.webpage;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import taiwan.webpage.another;

public class hello extends WebPage
{
    public hello()
    {
        add(new Link<Void>("gotoAnother")
        {
            @Override
            public void onClick()
            {
                setResponsePage(another.class);
            }
        });

        add(new userControl("userSend"));
    }

    public class userControl extends Form
    {
        private String userInput;

        public userControl(String id)
        {
            super(id);
            setDefaultModel(new CompoundPropertyModel(this));

            add(new TextField("userInput"));
        }

        public final void onSubmit()
        {
            PageParameters pageParameters = new PageParameters();
            pageParameters.add("value", userInput);

            setResponsePage(another.class, pageParameters);
        }
    }
}

another.html

<!doctype html>
<html>
    <head>
        <title>User Input</title>
    </head>

    <body>
        <h1><span wicket:id="message"></span></h1>
    </body>
</html>

another.java

package taiwan.webpage;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.request.mapper.parameter.PageParameters;

public class another extends WebPage
{
    public another()
    {
        add(new Label("message", "This is another page."));
    }

    public another(PageParameters parameters)
    {
        //If use Wicketstuff-Annotation shouldn't write super()
        //super(parameters);
        add(new Label("message", parameters.get("value")));
    }
}

 

實際運行畫面

如果直接點擊上方網址會不帶任何的參數直接跳轉到 another.html,那這時候 another.java 就會執行 another() 的建構式,那會看到預設顯示的訊息。

但若在下方的輸入框輸入內容,只要按下 Send 按鈕,就會將內容帶入並跳轉到 another.html,那這時 another.java 就會執行 another(PageParameters parameters) 的建構式,會看到使用者自行填入的內容。

 

那既然是以 POST 作為傳輸方式,那照理說是不是不應該在網址列出現「?name=小編過路君子」這種字樣。

要隱藏也非常簡單,把 hello.java 的倒數第四行的

setResponsePage(another.class, pageParameters);

改成

setResponsePage(new another(pageParameters));

就可以囉!

 

至於為什麼小編的網址這麼簡單乾淨利落,可以參考這篇文章:【Wickct】(縮短網址) 如何將網頁掛載到特定路徑下@小編過路君子

那如果想要知道除了使用 Link 還能使用什麼方式產生 Wicket 的特殊超連結,可以參考這篇:【Wickct】(link) <a> 如何新增超連結@小編過路君子

 

 

 

後記

如何隱藏在網址列的頁面參數真的有夠難找,翻了好久才終於找到一個原生、標準、漂亮的解答。

那小編就把這個頁面放在這裡:Wicket redirect: how to pass on parameters and keeps URLs "pretty"?,如果有需要的人可以自行前往。

END

你可能感興趣的文章

【PaperMC - API】如何發送指令到伺服器內 How to sending or executing commands to server

【Wicket】[Cookie]如何讀取和設定客戶端的Cookie 對於某些參數需要給予使用者,我們可以使用 Cookie 來讓客戶端記著,之後再跟伺服器裡的比對來達到驗證的目的

【Docker hub】[Linux]以IPv6來pull容器(container)吧! 在一個 IPv6 還不盛行的年代,做事情總是特別麻煩

【Stable Diffusion web UI】[AI 作畫](Linux)無 NVIDIA 顯卡之伺服器運行測試 凡事就是要試試看,才知道最後的結果

【C++】如何解決TLE,換句話說便是加速cin, cout的執行速度 [ZERO JUDGE](UVa) a159: 11743 - Credit Check 題目練習和副程式練習

【Maven】如何夾帶檔案至Jar內以及其讀取方式 想要讀取一個外部的文字文件?Maven是你的好幫手

隨機好文

高捷少女:購票大作戰(終) 完了。 這下真的完了! 艾米腦內所有的思考中樞,同時發出了淒厲的吶喊。完蛋啦!這下真的被揭穿了啦!! 「那……那是因為……」艾米結結巴巴的說:「因為……

艾米莉亞和高捷戀旅3① 「既然艾米莉亞小姐也來了,就把那個拿出來吧。」美麗島捷運商店的負責人說完,一名工作人員推著一個大箱子進入辦公室。他將箱子打開,將裡面的東西抬出來。艾米張大嘴巴

【英翻中歌詞】(二創歌)東方妖妖夢-人形裁判 ~玩弄人偶的少女 人形裁判 ~ 人の形弄びし少女 很久很久以前,在一個神奇的異地,住著一位少女,十分惹人憐愛 她的皮膚就像陶瓷一樣潔白,眼睛就像藍色寶珠般明亮

【數學】徐氏數學簡明講義(三) 第二章 直線與園 P2.1-17 Q28 28.若X、Y∈R,試求之最小值___ 解: 配方 畫圖 做對稱點 求其直線長度 解

【國文】虬髯客傳 大綱② (無本文、無翻譯) (續上篇筆記) 上篇小編有說要單獨拉出來討論的是這四個成語,分別是: 顧盼暐如——目光流轉,神采