日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符串url获取参数_如何从URL查询字符串获取示例参数或将其附加到URL查询字符串(示例)?...

發布時間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串url获取参数_如何从URL查询字符串获取示例参数或将其附加到URL查询字符串(示例)?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字符串url獲取參數

讓我們剖析幾個簡單的用例,并查看視圖參數的工作原理(視圖參數名稱不是強制性的,以匹配通過URL查詢字符串傳遞的請求參數,但在本文中,我們將重點討論這種情況):

情況1

在index.xhtml頁面中,我們有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata> ... <h:form>Enter name:<h:inputText value="#{playersBean.playerName}"/>Enter surname:<h:inputText value="#{playersBean.playerSurname}"/><h:commandButton value="Send" action="results?faces-redirect=true&includeViewParams=true"/> </h:form>

在results.xhtml頁面中,我們有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/> You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

在PlayersBean我們有:

@Named @RequestScoped public class PlayersBean {private String playerName;private String playerSurname;... }

當應用程序進入時發生了什么(設置查詢字符串的方式并不重要;您可以手動執行,也可以通過 這里) index.xhtml?playernameparam=rafael&playersurnameparam=nadal嗎?

  • 請求參數名的視圖參數的名稱相匹配,所以該視圖參數取請求參數值,最后把它們存儲在PlayersBean下托管bean playerName和playerSurname領域。 因此,粗略地說,您可以通過視圖參數設置托管bean字段。
  • 視圖將被渲染(生成HTML標記并將其發送到瀏覽器),因此您可以在文本輸入中看到rafael和nadal ,因為它們是從托管Bean屬性(即#{playersBean.playerName}和#{playersBean.playerSurname} )。
  • 您(作為用戶)可以在文本輸入中手動修改這些值(文本)(或像這樣保留它們)。 現在,當您單擊
    發送按鈕,您實際上提交了具有當前值的表單(由<h:form>分隔的部分
    </h:form> )。 因此,將提交名稱和姓氏,并覆蓋/初始化數據模型中的當前值(即使您沒有修改它們)。 在對視圖進行編碼(渲染)期間,JSF還將針對PlayersBean托管bean對視圖參數進行編碼。
  • 此外,JSF注意到您想要在導航到下一個目標頁面( results.xhtml )之前附加視圖參數(將其表示為: ?faces-redirect=true&amp;includeViewParams=true )。 在此請求的前面,已經根據PlayersBean托管bean評估了視圖參數。 因此,JSF處理視圖參數,并將根據視圖參數名稱和值計算出的相應查詢字符串附加到操作URL。
  • JSF導航到目標URL(現在包含查詢字符串)。 這是可見的,多虧了faces-redirect=true 。
  • 案例2

    在index.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata><h:form>Enter name:<h:inputText value="#{playersBean.playerName}"/>Enter surname:<h:inputText value="#{playersBean.playerSurname}"/><h:commandButton value="Send" action="results?faces-redirect=true&includeViewParams=true"/> </h:form>

    在results.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/> You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

    在PlayersBean我們有:

    @Named @RequestScoped public class PlayersBean {private String playerName = "roger";private String playerSurname = "federer";... }

    當應用程序到達index.xhtml時會發生什么? (無查詢字符串)

  • 沒有查詢字符串(沒有請求參數)。 因此,無法從查詢字符串初始化視圖參數,并且它們在PlayersBean也未設置任何內容!
  • 呈現視圖(生成HTML標記并將其發送到瀏覽器),并且文本輸入反映了
    roger和federer initalization數據(這些是評估#{playersBean.playerName}和#{playersBean.playerSurname} )。
  • 您(作為用戶)可以在文本輸入中(或不可以!)修改這些值。 現在,當您單擊“ Send按鈕時,您實際上提交了表單(屬于由<h:form>界定的部分的數據
    </h:form> )。 因此,將提交名稱和姓氏,并覆蓋/初始化模型中的當前值(即使您沒有修改它們)。 在對視圖進行編碼(渲染)期間,JSF還將針對PlayersBean托管bean對視圖參數進行編碼。
  • 此外,JSF注意到您想要在導航到下一個目標頁面( results.xhtml )之前附加視圖參數(將其表示為: ?faces-redirect=true&amp;includeViewParams=true )。 在此請求的前面,已經根據PlayersBean托管bean評估了視圖參數。 因此,JSF處理視圖參數,并將根據視圖參數名稱和值計算出的相應查詢字符串附加到操作URL。
  • JSF導航到目標URL(現在包含查詢字符串)。 這是可見的,多虧了faces-redirect=true 。
  • 案例3

    在index.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata><h:link value="Send" outcome="results" includeViewParams="true"/>

    在results.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/> You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

    在PlayersBean我們有:

    @Named @RequestScoped public class PlayersBean {private String playerName;private String playerSurname;... }

    當應用程序進入時發生了什么(設置查詢字符串的方式并不重要;您可以手動執行,也可以通過 > 這里) index.xhtml?playernameparam=rafael&playersurnameparam=nadal嗎?

  • 請求參數名稱與視圖參數的名稱匹配,因此視圖參數采用請求參數的值并將其存儲在受管bean中的playerName和playerSurname 。 因此,您可以通過視圖參數設置托管bean字段。
  • 視圖將被渲染(生成HTML標記并將其發送到瀏覽器),因此在文本輸入中,您可以看到rafael和nadal文本,因為它們是從托管Bean提取的(這些是評估#{playersBean.playerName}和#{playersBean.playerSurname} )。 在對視圖進行編碼(渲染)期間,JSF還將針對PlayersBean托管bean對視圖參數進行編碼。 現在,檢查頁面的源代碼,并注意對應于<h:link>的<a href>是如下生成的(注意,這是已fix ! )。 因此,JSF將<h:link>轉換為<a href>并從初始請求開始附加包含視圖參數的查詢字符串。 includeViewParams="true"屬性會導致以下鏈接:
  • 當您單擊鏈接時,您不會提交任何數據 ( <h:link>永遠不能在 <h:form> )。 您只需執行上面的靜態HTML代碼,這就是一個簡單的GET請求!
  • JSF通過此GET(包含查詢字符串)導航到目標URL。 不需要faces-redirect=true 。
  • 案例4

    在index.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata><h:link value="Send" outcome="results" includeViewParams="true"/>

    在results.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/> You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

    在PlayersBean我們有:

    @Named @RequestScoped public class PlayersBean {private String playerName = "roger";private String playerSurname = "federer";... }

    當應用程序到達index.xhtml時會發生什么? (無查詢字符串)

  • 沒有請求參數。 因此,無法從查詢字符串初始化視圖參數。 view參數也不會在托管bean中設置任何內容!
  • 視圖已呈現(生成了HTML標記并將其發送到瀏覽器),因此您可以在文本輸入中看到roger和federer ,因為它們是從托管Bean提取的(這些是評估#{playersBean.playerName}和#{playersBean.playerSurname} )。 在對視圖進行編碼(渲染)期間,JSF還將針對PlayersBean托管bean(獲取roger和federer )對視圖參數進行編碼。 現在,檢查頁面的源代碼,并注意對應于<h:link>的<a href>是如下生成的(注意,這是已fix ! )。 因此,JSF將<h:link>轉換為<a href>并從初始請求開始附加包含視圖參數的查詢字符串。 includeViewParams="true"屬性會導致以下鏈接:
  • 單擊鏈接時,您不會提交任何數據。 您只需執行上面的靜態HTML代碼,這就是一個簡單的GET請求!
  • JSF通過此GET(包含查詢字符串)導航到目標URL。 不需要
    faces-redirect=true 。
  • 案例5

    在index.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata><h:link value="Send" outcome="results" includeViewParams="true"/>

    在results.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/> You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

    在PlayersBean我們有:

    @Named @RequestScoped public class PlayersBean {private String playerName; // this is nullprivate String playerSurname; // this is null... }

    當應用程序到達index.xhtml時會發生什么? (無查詢字符串)

  • 沒有請求參數。 因此,無法從查詢字符串初始化視圖參數。 view參數在bean中沒有設置任何內容!
  • 視圖已呈現(生成了HTML標記并將其發送到瀏覽器),因此您無法在文本輸入中看到任何內容,因為它們是從Bean提取的(這些是#{playersBean.playerName}和#{playersBean.playerSurname}其中為null –您不能期望看到文本為null! )。 在對視圖進行編碼(渲染)期間,JSF還將針對PlayersBean托管bean(獲取null )對視圖參數進行編碼。 現在,檢查頁面的源代碼,并注意對應于<h:link>的<a href>是如下生成的(注意,這是已fix ! )。 因此,JSF將<h:link>轉換為<a href> ,但是沒有包含視圖參數的查詢字符串,因為JSF看到了includeViewParams="true"屬性,但無法生成以下HTML:<a href =” /…/results.xhtml? playernameparam = null &amp; playersurnameparam = null “>發送</a>”因此,JSF將“忽略” null值,并且沒有要附加的查詢字符串:<a href=”/…/results.xhtml”>發送</a>
  • 單擊鏈接時,您不會提交任何數據。 您只需執行上面的靜態HTML代碼,這就是一個簡單的GET請求!
  • JSF通過此GET(包含查詢字符串)導航到目標URL。 不需要faces-redirect = true。
  • 案例6 –為了更好地理解

    在index.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata><h:form>Enter name:<h:inputText value="#{playersBean.playerName}"/>Enter surname:<h:inputText value="#{playersBean.playerSurname}"/><h:commandButton value="Send" action="results?faces-redirect=true&includeViewParams=true"/> </h:form>

    在results.xhtml頁面中,我們有:

    <f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/> <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/> </f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/> You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

    在PlayersBean我們有:

    @Named @RequestScoped public class PlayersBean {private String playerName; // this is nullprivate String playerSurname; // this is null... }

    當應用程序到達index.xhtml時會發生什么? (無查詢字符串)

  • 沒有請求參數。 因此,無法從查詢字符串初始化視圖參數。 view參數在bean中也沒有設置任何內容!
  • 渲染視圖(生成HTML標記并將其發送到瀏覽器),您可以看到兩個空文本輸入(這些是評估#{playersBean.playerName}和#{playersBean.playerSurname} )。 您不能期望看到文本,為空!
  • 作為用戶,請勿在這些文本輸入中鍵入任何內容,然后按“ Send按鈕。 實際上,您將提交表單(屬于<h:form> </h:form>界定的部分的數據)。 因此,將提交名稱和姓氏(它們是空白),并覆蓋/初始化模型中的當前值。 在對視圖進行編碼(渲染)期間,JSF還將針對PlayersBean托管bean對視圖參數進行編碼(將獲得空白)。
  • 此外,JSF注意到您想要在導航到下一個目標頁面( results.xhtml )之前附加視圖參數(將其表示為: ?faces-redirect=true&amp;includeViewParams=true )。 在此請求的前面,已經根據PlayersBean托管bean評估了視圖參數。 因此,JSF處理視圖參數,并將根據視圖參數名稱和值計算出的相應查詢字符串附加到操作URL。
  • JSF導航到目標URL(現在包含查詢字符串)。 這是可見的,多虧了faces-redirect=true 。
  • http://localhost:8080/.../results.xhtml?playernameparam=&playersurnameparam=

    注意playernameparam和playersurnameparam!的值playersurnameparam! 由于您已提交空白區域,因此您將看到。 當然,這看起來“丑陋”且非常無用。 也許您更喜歡將空白視為null值。 為此,您可以在web.xml設置以下上下文參數:

    <context-param><param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name><param-value>true</param-value> </context-param>

    現在,清理并構建應用程序,然后在相同的情況下再次運行它。 這次,當您按
    發送按鈕,您會注意到此鏈接:

    • http:// localhost:8080 / ch2_6 / faces / results.xhtml

    因此,沒有查詢字符串反映了視圖參數的存在! 好吧,您只是指示JSF將提交的空字符串視為null值。 但是,正如您所知,附加視圖參數后,“ null值”將被“忽略”。

    注意

    附加視圖參數的方式可以在Mojarra的com.sun.faces.application.view.MultiViewHandler看到。 特別是在:

    // Mojarra 2.2.9, MultiViewHandler#addViewParameters() protected void addViewParameters(FacesContext ctx,String viewId,Map<String,List<String>> existingParameters) {UIViewRoot currentRoot = ctx.getViewRoot();String currentViewId = currentRoot.getViewId();Collection<UIViewParameter> toViewParams = Collections.emptyList();Collection<UIViewParameter> currentViewParams;boolean currentIsSameAsNew = false;currentViewParams = ViewMetadata.getViewParameters(currentRoot);if (currentViewId.equals(viewId)) {currentIsSameAsNew = true;toViewParams = currentViewParams;} else {ViewDeclarationLanguage pdl = getViewDeclarationLanguage(ctx, viewId);ViewMetadata viewMetadata = pdl.getViewMetadata(ctx, viewId);if (null != viewMetadata) {UIViewRoot root = viewMetadata.createMetadataView(ctx);toViewParams = ViewMetadata.getViewParameters(root);}}if (toViewParams.isEmpty()) {return;}for (UIViewParameter viewParam : toViewParams) {String value = null;// don't bother looking at view parameter if it's been overriddenif (existingParameters.containsKey(viewParam.getName())) {continue;}if (paramHasValueExpression(viewParam)) {value = viewParam.getStringValueFromModel(ctx);}if (value == null) {if (currentIsSameAsNew) {value = viewParam.getStringValue(ctx);} else {value = getStringValueToTransfer(ctx, viewParam, currentViewParams);}}// SO, IF VALUE IS NULL, DON'T CONSIDER THIS A VIEW PARAMif (value != null) {List<String> existing = existingParameters.get(viewParam.getName());if (existing == null) {existing = new ArrayList<String>(4);existingParameters.put(viewParam.getName(), existing);}existing.add(value);}} }

    翻譯自: https://www.javacodegeeks.com/2015/11/how-view-parameters-are-obtainedattached-fromto-the-url-query-string-examples.html

    字符串url獲取參數

    總結

    以上是生活随笔為你收集整理的字符串url获取参数_如何从URL查询字符串获取示例参数或将其附加到URL查询字符串(示例)?...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。