我的xhtml代码:
<h:commandLink action="#{detailController.updateProject}" class="positive" >
<h:graphicImage library="img" name="tick.png" alt=""/>
<h:outputText value="Save" />
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)
不从JSF框架调用此操作(updateProject())!即使我在managedBean中删除它也没有抛出异常.
有没有人有这样的问题?我甚至无法解释--.-我的意思是这个行动方式就在那里!
ADD:是啊它是啊:表格标签!但是我在这个视图中有两种形式!可能那是问题吗?
ADD2:我还应该提一下,如果按下按钮,它会把我扔回上一个视图!所以我的操作方法被忽略了,而是打开了另一个视图?!?!
为了提供更多信息,我的页面构建如下:
panelGroup name=show rendered=!controller.edit
form
buttons
outputtext
/form
/panelGroup
panelGroup name=edit rendered=controller.edit
form
buttons
inputText
/form
/panelGroup
Run Code Online (Sandbox Code Playgroud)
所以我有两个,在一个文件中编辑和显示一个实体!但只有底部形式的按钮才显示出奇怪的行为(见上文).
回答BalusC:1.我使用两种形式(它们没有嵌套!)2.在底部形式我已经放置了啊:消息我要尝试将我的控制器放入viewScop进行检查3和4我不知道如何检查5.谢谢你..
我陷入了与此类似的导航案例问题。简而言之,我正在尝试使用 ajax 渲染将导航从一个页面重定向到另一个页面h:commandLink。这是支持 bean
@ManagedBean
public class StartBean {
public void search(){
FacesContext
.getCurrentInstance()
.getExternalContext()
.getFlash()
.put("result", "hooray!")
;
}
public String showResult(){
return "result?faces-redirect=true";
}
}
Run Code Online (Sandbox Code Playgroud)
和起始页
<h:body>
<h:form prependId="false">
<h:commandButton value="Click" action="#{startBean.search}">
<f:ajax execute="@this" render="@form"/>
</h:commandButton>
<br/>
<h:commandLink
action="#{startBean.showResult()}"
rendered="#{flash.result != null}"
value="#{flash.result}"
/>
</h:form>
</h:body>
Run Code Online (Sandbox Code Playgroud)
而result页面只是显示一条消息。这两个页面都位于 Web 模块上下文根上。恰好h:commandLinkajax提交后显示正确,但是点击却导致页面刷新。它不会result像预期的那样重定向到该页面。之后,如果重新加载页面(F5),result则会显示页面。这似乎是渲染周期的问题。
有什么建议吗?
提前致谢。
我有以下示例代码.最初,只有commandButton Two可见.当我单击此按钮时,commandButton One也可见.但是当我单击One时,后备bean方法click1不会被触发.
以下是我的代码:
XHTML
<h:form id="form1">
<h:inputHidden id="show" value="#{bean.show1}" />
<h:commandButton id="button1" value="One" action="#{bean.click1}"
rendered="#{bean.show1}" />
</h:form>
<h:form id="form2">
<h:inputHidden id="show" value="#{bean.show1}" />
<h:commandButton id="button2" value="Two" action="#{bean.click2}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
支持bean
@RequestScoped
@Named("bean")
public class JsfTrial implements Serializable {
private static final long serialVersionUID = 2784462583813130092L;
private boolean show1; // + getter, setter
public String click1() {
System.out.println("Click1()");
return null;
}
public String click2() {
System.out.println("Click2()");
setShow1(true);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了BalusC提供的非常丰富的答案.
如果我理解正确,我的问题是由于这个答案的 …
我正在使用 jstl 进行小型测试。它不应该如何工作
这是小代码:
<c:set var="id" value="#{mBlog.blog.id}"/>
${id} //printing 4
<c:if test="${id > 0}">
<h:commandButton value="Update" action="#{mBlog.update}"/> //is not rendered
</c:if>
<c:if test="${id == 0}">
<h:commandButton value="Save" action="#{mBlog.save}"/> //is not rendered
</c:if>
Run Code Online (Sandbox Code Playgroud)
我不知道出了什么问题。在显示器中我只看到 4 个,没有别的。
我有这个数据表:
<h:dataTable value="#{orderController.orderList}" var="order"
styleClass="table table-striped">
<h:column>
<f:facet name="header">#</f:facet>
<h:outputText value="#{order.orderNo}" escape="false"/>
</h:column>
<h:column>
<f:facet name="header">Cliente</f:facet>
<h:outputText value="#{order.client}" escape="false"/>
</h:column>
<h:column>
<f:facet name="header">Data</f:facet>
<h:outputText value="#{order.date}" escape="false"/>
</h:column>
<h:column>
<f:facet name="header">Status</f:facet>
<h:outputText value="#{order.status}" escape="false"/>
</h:column>
<h:column>
<f:facet name="header"></f:facet>
<h:form>
<h:commandButton action="#{orderController.orderDetail}" value="Detalhe" styleClass="btn btn-info"/>
</h:form>
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
我正在显示订单列表,每个列表都有一个"详细信息"按钮,将用户重定向到orderDetail.html内部页面views/fornecedores.
我已经调试了,当我点击commandButton它时,它没有调用我的bean函数.[
我也尝试了这个:<h:commandButton action="views/fornecedores/orderDetail.html" value="Detalhe" styleClass="btn btn-info"/>没有,它一直将我重定向到同一页面,orderSearch.html.
我需要的是调用将接收orderNo参数的方法,并将加载对象并重定向到orderDetail.html页面.
我做错了什么或这种方法的最佳方法是什么?
我正在使用Primefaces 3.4.2和JSF2.1我创建了一个分为一些布局单元的页面.在右侧布局单元中,我有一个accordionPanel并创建了动态菜单,中间中心布局由ui:include和一个页面加载在图层中,当我点击链接时打开一个包含动态页面的对话框.打开和关闭对话框而不在正确的布局中执行任何操作后,中间中心布局不再起作用.我可以看到它,但我点击输入文本我不能输入任何东西也点击其他组件没有任何反应!什么是问题?有解决方案吗?
当单击菜单项打开对话框包含其他页面并单击树节点中心布局更改时,在对话框中打开的页面工作正常,但是当关闭对话框,中心布局按钮和输入不起作用时,其他布局组件运行良好!
我的新代码:
<p:layoutUnit id="right" position="east" size="145" style="text-align:center;direction: ltr!important;padding: 0px!important;">
<h:form prependId="false">
<script type="text/javascript">
function test(id,url,title){
document.getElementById('h1').value=id;
document.getElementById('h2').value=url;
document.getElementById('h3').value=title;
salamm.jq.click();
}
</script>
<h:inputHidden id="h1" value="#{adminC.nclose}" />
<h:inputHidden id="h2" value="#{adminC.nurl}"/>
<h:inputHidden id="h3" value="#{adminC.ntitle}"/>
<p:commandButton actionListener="#{adminC.addTab()}" id="salam" widgetVar="salamm" update=":dlgpanel" onstart="waitDialogmain.show()" style="display: none" oncomplete="waitDialogmain.hide();dlg1.show()"/>
<p:accordionPanel style="text-align: center;font-family: tahoma!important" activeIndex="#{menuGen.activeIndex}">
<p:tab title="connections" id="t0" rendered="#{menuGen.menuList1.length()>0}" >
<center>
<h:outputText escape="false" value="#{menuGen.menuList1}"/>
</center>
<br/>
</p:tab>
<p:tab title="manage" id="t1" rendered="#{menuGen.menuList2.length()>0}" >
<center>
<h:outputText value="#{menuGen.menuList2}" escape="false"/>
</center>
<br/>
</p:tab>
</p:accordionPanel>
</h:form>
</p:layoutUnit>
<p:layoutUnit id="center" style="padding: 0px!important;" position="center">
<p:layout …Run Code Online (Sandbox Code Playgroud) 使用 JSF 尝试一个简单的应用程序时出现错误。
javax.el.MethodNotFoundException: Method not found: com.jsf.training.beans.TravelBean@4b6b8628.travelInfo()
at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:245)
at org.apache.el.parser.AstValue.invoke(AstValue.java:271)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:149)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:818)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
我的托管 bean 是:
@ManagedBean (name="travelBean")
@SessionScoped
public …Run Code Online (Sandbox Code Playgroud) jsf ×5
jsf-2 ×3
ajax ×1
java ×1
javascript ×1
jstl ×1
layout ×1
navigation ×1
primefaces ×1
redirect ×1