当前位置: 首页 > 知识库问答 >
问题:

如何将操作结果传递给jsf组合?

宣星光
2023-03-14

我有一个工作良好的JSF片段。单击commandbutton时,它应该通过重定向到自身来重新加载页面。

<p:dataTable value="#{fileModel.files}" 
            var="file" scrollable="true" scrollHeight="400">
    <p:column headerText="#{msgs.lbl_file}">
        #{file.name}
    </p:column>
    <p:column width="150">
        <p:commandButton value="#{msgs.lbl_import}" 
            actionListener="#{fileModel.importFile(file, module)}"
            **action="mypage.jsf?faces-redirect=true"**/>
    </p:column>
    <p:column width="150">
        <p:commandLink value="#{msgs.lbl_view}" target="_blank" ajax="false"
            actionListener="#{fileModel.view(file)}"/>
    </p:column>
</p:dataTable>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:p="http://primefaces.org/ui">
    <p:dataTable value="#{fileModel.files}" 
                var="file" scrollable="true" scrollHeight="400">
        <p:column headerText="#{msgs.lbl_file}">
            #{file.name}
        </p:column>
        <p:column width="150">
            <p:commandButton value="#{msgs.lbl_import}" 
                actionListener="#{fileModel.importFile(file, module)}"
                **action="#{redirectTo}"**/>
        </p:column>
        <p:column width="150">
            <p:commandLink value="#{msgs.lbl_view}" target="_blank" ajax="false"
                actionListener="#{fileModel.view(file)}"/>
        </p:column>
    </p:dataTable>
</ui:composition>
<ui:include src="moduleSettingImportDialog.xhtml">
  <ui:parameter name="redirectTo" value="mypage.jsf?faces-redirect=true"/>
</ui:include>

我得到的错误是

javax.el.elException:不是有效的方法表达式:#{redirectTo}(位于com.sun.el.lang.expressionBuilder.CreateMethodExpression(ExpressionBuilder.java:311)(位于com.sun.el.expressionFactoryImpl.java:96)(位于org.jboss.weld.util.el.forwardingexpressionFactor.createMethodExpression(位于org.jboss.weld.el.weldexpressionFactor.createMethodExpression(位于

我在使用JSF复合组件时也会遇到类似的错误。

<c:interface>
    <c:attribute name="module"/>
    <c:attribute name="redirectTo" type="java.lang.String"/>
</c:interface>

<c:implementation rendered="#{systemSettingModel.LOG_REASON_FOR_CHANGES_ISAKTIV}">
    <p:dataTable value="#{fileModel.files}" 
                var="file" scrollable="true" scrollHeight="400">
        <p:column headerText="#{msgs.lbl_file}">
            #{file.name}
        </p:column>
        <p:column width="150">
            <p:commandButton value="#{msgs.lbl_import}" 
                actionListener="#{fileModel.importFile(file, cc.attrs.module)}"
                **action="#{cc.attrs.redirectTo}"**/>
        </p:column>
        <p:column width="150">
            <p:commandLink value="#{msgs.lbl_view}" target="_blank" ajax="false"
                actionListener="#{fileModel.view(file)}"/>
        </p:column>
    </p:dataTable>
</c:implementation>

#{cc.attrs.redirectTo}:javax.el.elException:java.lang.IllegalArgumentException:无法将multimodulesettings.jsf?faces-redirect=true&includeViewParams=true将类java.lang.String转换为类javax.el.methodexpression javax.face.illegalargumentException:#{cc.attrs.redirectTo}:javax.elexception:java.elexception?faces-redirect=true将类在com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198)在javax.faces.webapp.facesserver.service(facesserver.java:646)在org.apache.catalina.core.standardwrapper.service(standardwrapper.service(standardwrapper.java:1682)在org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.344)在

如何将固定字符串传递给CommandButton的action属性中使用的JSF模板或复合组件?

共有1个答案

应向晨
2023-03-14

作为一种解决办法,我实现了一个JSF bean方法,它只返回传入的字符串,如下所示。

public String echo(String s) {
    return s;
}

则不是将fix字符串作为参数传递给组件,而是由EL表达式传递。

<ui:include src="moduleSettingImportDialog.xhtml">
  <ui:parameter name="redirectTo" value="#{jsfBean.echo('mypage.jsf?faces-redirect=true')}"/>
</ui:include>
 类似资料:
  • 问题内容: 我正在用JavaScript准备一些变量(在我的特定情况下,我想获取GPS位置): 我想通过下面的命令按钮将它们发送到我的托管bean: 如何将JavaScript中的变量和变量发送到JSF托管bean操作方法? 问题答案: 让JS以相同的形式将它们设置为隐藏的输入值。 命令按钮操作方法可以按通常方式将它们作为bean属性进行访问。

  • 问题内容: 我打算将JSON格式的整个表单数据发布到Struts2 Action。以下是我的代码段。纠正我要去哪里的错误或帮助我,以便我可以正确获取Action文件中的所有值。我在操作文件中的所有SOP显示为 我的表格数据变成了 Struts2操作文件: 现在的输出 问题答案: 由于我使用名称,值,所以必须使用名称来获取它。下面是工作代码

  • 我对Redux有相当的了解。 我想知道的一件事是,在一个大型应用程序中,会有多个操作和减缩器。 我的问题是 > reducer中是否存在重复操作? 即使当我查看redux流时,我也不理解这些问题 请澄清我的困惑。

  • 我想通过下面的命令按钮将它们发送到我的托管bean: 我如何将和变量从JavaScript发送到JSF托管bean动作方法?

  • 我想在我的组件中触发一个动作。这是一个表示组件,不需要重新创建。路由器实现是使用反应路由器冗余完成的。 main.js 应用:日新社: header.js: employee.js: action-creator.js: 道具将不包含动作,因为我没有将它绑定到道具上。我尝试在App.js中编写mapStateToProps和mapDispatchToProps,如下所示: 导出默认连接(mapSt

  • 使用Spring数据MongoDB。我在MongoRepository上定义了这个查询: 由于我想使用运算符,我不能通过方法命名方式构建查询,所以我使用注释。 我已经调试了prints。我将该值修改为,但没有变化。