我希望facelet(jsf 2.0)中的一些代码可以工作:
<h:inputText id="q" />
<h:button outcome="/search.xhtml?q=#{q.value}" />
但是当我按下按钮时,搜索页面会打开而没有任何参数。
我想,我的EL表达错了。是否可以从EL表达式访问 inputText 值?如果没有,我怎样才能实现相同的功能?
答案 0 :(得分:1)
我已经完成了使用普通的HTML格式:
<form action="faces/search.xhtml" method="get">
<input type="text" name="query" />
<input type="submit" value="Find" />
</form>
在search.xhtml中我有查看参数来获取查询字符串的值:
<f:metadata>
<f:viewParam name="query" />
</f:metadata>
此解决方案存在问题 - “faces / search.xhtml”是硬编码的。此外,当我将此表单放在search.xhtml中并执行多次搜索时,我在浏览器URL中有类似的内容:
“HTTP://本地主机:8080 /应用/面/面/面/ search.xhtml”
我认为可以使用PrettyFaces(TODO:)
解决此问题答案 1 :(得分:0)
这是一个很晚的答案,但我想许多发现这篇文章的人都会对EL是否可以访问html组件以及如何访问html产生同样的疑问: 是的,EL可以访问隐式JSF对象的JSF组件。 但是,到目前为止,我仅看到并使用了component.valid的示例:
<h:inputText id="streetNumber" value="#{property.streetNumber}" title="streetNumber" required="true" requiredMessage="Please enter the street number!" validatorMessage="Please enter a street number between 1 and 1000" converterMessage="Please enter a number" pt:placeholder="900">
<f:convertNumber integerOnly="true"/>
<f:validateLongRange minimum="1" maximum="1000" />
</h:inputText>
<h:message for="streetNumber" class="#{!streetNumber.valid ? 'label label-warning' : 'none'}" />
所以,我建议您(德米特里)将代码更改为
<h:button outcome="#{"/search.xhtml?q=" + q.value}" />
请让我知道它是否有效,因为我也很好奇,遇到类似问题的任何人都可以效仿我的示例,并请告诉我结果。