我是JSF的初学者,我想在未来的网站上编写一个小搜索栏。

我创建了两个页面: index.xhtmlsearch.xhtml ,并且尝试将get参数从index.xhtml传递给search.xhtml ,所以我做了这个小公式:

    <!-- index.xhtml -->
    <h:form id="Form_search">
        <h:inputText class="search_bar_text" binding="#{se}"></h:inputText>
        <h:button class="search_bar_button" outcome="search">
            <f:param name="search" value="#{se.value}" />
        </h:button>
    </h:form>

总而言之,我想将inputText的内容发送到search.xhtml

但有一个问题:当我点击提交按钮,没有参数传递,这样反而有/search.xhtml?search=foobar我只有/search.xhtml

我也试过了,但这也不起作用:

    <!-- index.xhtml -->
    <h:form id="Form_search">
        <h:inputText class="search_bar_text" binding="#{se}"></h:inputText>
        <h:button class="search_bar_button" outcome="search.xhtml?search=#{se.value}">
        </h:button>
    </h:form>

有人可以向我解释此问题的原因以及如何解决吗?

===============>>#1 票数:3 已采纳

<f:param value><h:button outcome>是在呈现HTML输出时进行评估的,而不是在您似乎期望的“提交”表单期间进行的评估。 请注意,实际上这里没有表单提交的方式。 如果您能够阅读HTML代码 ,则应该在JSF生成的HTML输出中看到它,您可以通过右键单击Webbrowser中的View Source查看

将其修复为真正的GET表单。 您根本不需要<h:form><h:inputText><h:button> 您不需要POST表单。 您似乎不想将输入绑定到bean属性。 您不需要简单的导航按钮。

<form id="form_search" action="search.xhtml">
    <input name="search" class="search_bar_text" />
    <input type="submit" class="search_bar_button" />
</form>

是的,您只能在JSF中使用纯HTML。

如果确实出于某种原因确实需要为此目的使用JSF组件,那么您也可以使用POST-redirect-GET-with-view-params技巧。

首先将其添加到index.xhtmlsearch.xhtml

<f:metadata>
    <f:viewParam name="search" value="#{bean.search}" />
</f:metadata>

然后使用以下形式:

<h:form id="form_search">
    <h:inputText value="#{bean.search}" styleClass="search_bar_text" />
    <h:commandButton styleClass="search_bar_button" action="search?faces-redirect=true&amp;includeViewParams=true" />
</h:form>

如果您打算在其上使用JSF验证,那么这也许很有意义。 即便如此,这仍不能阻止最终用户使用无效的参数手动打开URL。 然后,最好在search.xhtml验证添加到<f:viewParam>本身。

也可以看看:

  ask by Pascal Goldbach translate from so

未解决问题?本站智能推荐:

1回复

在JSF的托管bean中获取GET参数

有人能告诉我如何捕获从JSF托管bean中的URI传递的参数吗? 我有一个导航菜单,其中所有节点都链接到一些导航案例。 我有两个类似的项目:收购产品和发行产品。 它们具有相同的页面,但有一个不同的参数:productType。 我试着通过将它添加到“to-view-id”元素中的URL来
1回复

通过Url将get Request参数传递给托管Bean,以便在jsf1.2中进行登录验证

我有一个要求,要在ipad应用程序中启动在jsf 1.2和spring 2.5中开发的门户应用程序。 用户登录ipad应用程序后,用户单击可用的门户网站链接,然后ipad应用程序将通过获取请求URL传递用户凭据,如果需要,我将对其进行验证并将其重定向到home.xhtml页。验证成功,否则我将
2回复

JSF缺少URL中的获取参数[重复]

这个问题已经在这里有了答案: 在JSF表单上保留GET请求查询字符串参数提交 2个答案 经过数天的谷歌搜索后,我必须放弃并寻求帮助。 我有带有jsf标签的xhtml页面。 整个页面由PageController.java控制。 重要的是控制器从URL参数中获取
1回复

检索所有GET参数的列表?

是否有一种简单的方法可以使用CDI注入快速获取URL中所有GET参数的列表? 我正在寻找的是这样的:
1回复

使用get参数在JSF上分页

我在index.xhtml上,我有这段代码: BlogEntryListerBean是RequestScoped 。 这是我在oldBlogEntries中的代码 因此,当我第一次点击index.xhtml时,我看到的URL是:index.xhtml,如预期的那样。 我第一次
2回复

如何使用JSF2获取GET参数? [重复]

这个问题在这里已有答案: 如何在页面加载时处理辅助bean中的GET查询字符串URL参数? 3个答案 我有这个网址例如: http://example.com?parameter=content 当用户点击此链接时,我应该能够获得“内容”的参数值
1回复

JSF:HTTP GET参数数组

我想将数组作为GET参数传递,例如: HTTP://localhost/index.jsf myArray的= 1stValue&myArray的= 2ndValue&myArray的= 3rdValue 然后我想遍历该数组: 我知道这段代码行不通。 但是我该怎么做呢?
2回复

如何在h:form提交期间将查询参数附加到POST请求

当我单击下面提到的页面中的<h:form>标记的命令按钮时,我希望一旦单击“提交”按钮,查询参数即作为请求参数发送,因为我的页面URL为../index.xhtml?cid=12&ctype=video 。 我希望在我的操作方法中应将其打印为CID=12 ,但是,应将其
3回复

使用GET请求在JSF 2.0中提交表单

有没有一种方法可以提交表单并使URL包含参数,即作为GET请求提交。而不是POST? form.jsf /?firstName = John&lastName = Doe 我以为会工作(而不是正常的,但是似乎没有获取表单数据..有什么想法吗?
1回复

使用GET进行JSF页面初始化

我需要能够使用数据库查询中的GET请求中发送的args从数据库中获取用户的信息,并从该信息中预填充页面上的某些字段。 使用标准JSF执行这种“页面加载”类型的功能的最佳方法是什么? 到目前为止,我发现了几种可能性: 在后备bean构造函数中执行初始化(不是一个大风扇,因为我