我需要製作一個小型表單,用戶在inputField中鍵入一個數字,然後單擊一個按鈕,然後發送到一個頁面,使用該數字作爲參數到頁面。CommandButton動作:使用inputText的值作爲動態URL中的參數
到目前爲止,我得到這個:
<p:inputText id="myText" style="width:75px;" />
<p:commandButton id="myButton" value="Ir"
action="/site/page.xhtml?id=${param['form:myButton']}"
title="Ir" ajax="false" proces="@this,myText" />
試圖與${param['form:myButton']}
和#{param['form:myButton']}
,錯誤是一樣的。
問題是,JSF認爲它的方法表達...
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/intranet] threw exception [/myPage action="/site/page.xhtml?id=${param['form:myButton']}".xhtml @95,41 action="/site/page.xhtml?id=${param['form:myButton']}" Not a Valid Method Expression: action="/site/page.xhtml?id=${param['form:myButton']}" with root cause
javax.el.ELException: Not a Valid Method Expression: action="/site/page.xhtml?id=${param['form:myButton']}"
at org.apache.el.lang.ExpressionBuilder.createMethodExpression(ExpressionBuilder.java:236)
at org.apache.el.ExpressionFactoryImpl.createMethodExpression(ExpressionFactoryImpl.java:55)
at org.jboss.weld.util.el.ForwardingExpressionFactory.createMethodExpression(ForwardingExpressionFactory.java:43)
at org.jboss.weld.el.WeldExpressionFactory.createMethodExpression(WeldExpressionFactory.java:64)
at com.sun.faces.facelets.tag.TagAttributeImpl.getMethodExpression(TagAttributeImpl.java:222)
at com.sun.faces.facelets.tag.jsf.ActionSourceRule$ActionMapper2.applyMetadata(ActionSourceRule.java:104)
at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81)
at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129)
at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:402)
,這是最底層的異常跟蹤。
問題:當按鈕被點擊時,如何將輸入字段的值輸入到Button的操作中,以便瀏覽器導航到所需的頁面,並將輸入中的值作爲參數傳遞,而無需訴諸支持豆。
我不需要與服務器通信,只是轉發頁面。
任何使用jQuery或純JS與JSF串聯的解決方案也可以接受。
使用鑽嘴魚科,primefaces 3.3.1
你做錯了。行動期望一個Java方法作爲EL。例如:#{bean.someMethod}。 'bean'是JSF ManagedBean的地方。要傳遞值使用#{bean.someMethod(someValue)}。在這裏查看更多:http://balusc.blogspot.in/2011/09/communication-in-jsf-20.html – 757071 2013-02-26 16:16:13
''
''的動作可以有一個字符串而不是Java方法。它會在您點擊按鈕時將您發送到頁面。我不想要一個方法表達式。 – Mindwin 2013-02-26 16:51:05
具體功能需求尚不清楚。你想要執行GET表單提交還是要執行POST表單提交,然後重定向到所需的GET URL? – BalusC 2013-02-26 17:01:57