gpt4 book ai didi

jsf - java.lang.UnsupportedOperationException : Cannot set ServletRequest Parameter

转载 作者:行者123 更新时间:2023-12-04 05:17:41 32 4
gpt4 key购买 nike

我正在处理一个 JSF 1.1 项目。

JSP:

<h:column>
<f:facet name="header"> <h:outputText value="Edit" /> </f:facet>

<h:commandLink rendered="#{(Table1_var.status == 'CONFIRMED') or (Table1_var.status == 'CHECKED_IN')}"
action="#{Table1_var.onEditReservation}">
<h:graphicImage id="view-details-link" alt="Drill Down on the Dynamic Link!"
url="images/editReservationSmall.png" styleClass="view-details-img"/>
<f:param
name="VastuId"
value="#{Table1_var.id}" />
</h:commandLink>

<f:facet name="footer"><h:outputText value="Edit" /> </f:facet>
</h:column>

<f:param> , VastuId参数被分配了 id .因为 var=Table1_var我不知道它与类的映射位置。但是我通过手动搜索可以获得该值的类/方法:
public void navReservationDetail(final ActionEvent e) {
Calendar cal1 = Calendar.getInstance();
String rowId = FacesHelper.getRequestParameter("VastuId");
System.out.println("ID :"+rowId);
}
FacesHelper.getRequestParameter
public static String getRequestParameter(String parameter) {
return (String) FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get(parameter);
}

我想在不使用 UI 的情况下通过 Java 手动设置该参数。我尝试使用这个:
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().put("#{VastuId}", reservationBean.getParentReservationProperty());              
String rowId = FacesHelper.getRequestParameter("VastuId");
System.out.println("selectedVastuId = "+rowId);

它在 getRequestParameterMap().put() 处抛出异常
java.lang.UnsupportedOperationException: Cannot set ServletRequest Parameter
at org.apache.myfaces.context.servlet.RequestParameterMap.setAttribute
(RequestParameterMap.java:44)
at org.apache.myfaces.context.servlet.AbstractAttributeMap.put(AbstractAttributeMap.java:104)

这是怎么引起的,我该如何解决?

最佳答案

parameter map是只读的。在 servlet 环境中,此数据结构表示 URL 查询部分中的值(例如 http://foo/bar?queryValue=queryKey)。服务器只能通过向浏览器发出重定向调用来更改这些值。

基本 JSF 1.1/1.2 实现中可用的每用户读/写范围是 requestsession .

将数据放入范围时,您应该使用文字名称而不是 EL 表达式:

FacesContext.getCurrentInstance()
.getExternalContext()
.getRequestMap()
.put("VastuId", reservationBean.getParentReservationProperty());

然后可以使用表达式 #{VastuId} 在 View 中解析此值。或 #{requestScope.VastuId} .

关于jsf - java.lang.UnsupportedOperationException : Cannot set ServletRequest Parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14049856/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com