如何从URL查询字符串获得/附加视图参数(示例)?

让我们剖析几个简单的用例,并查看视图参数的工作原理(视图参数名称不是强制性的,以匹配通过URL查询字符串传递的请求参数,但在本文中,我们将重点讨论这种情况):

情况1

index.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata>
...
<h:form>Enter name:<h:inputText value="#{playersBean.playerName}"/>Enter surname:<h:inputText value="#{playersBean.playerSurname}"/><h:commandButton value="Send" action="results?faces-redirect=true&includeViewParams=true"/>                 
</h:form>

results.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/>
You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

PlayersBean我们有:

@Named
@RequestScoped
public class PlayersBean {private String playerName;private String playerSurname;...
}

当应用程序进入时发生了什么(设置查询字符串的方式并不重要;您可以手动进行操作,也可以通过 这里) index.xhtml?playernameparam=rafael&playersurnameparam=nadal吗?

  1. 请求参数名称与视图参数的名称匹配,因此视图参数采用请求参数的值,最后将它们存储在PlayersBean管Bean中的playerNameplayerSurname字段下。 因此,粗略地说,您可以通过视图参数设置托管bean字段。
  2. 视图将被渲染(生成HTML标记并将其发送到浏览器),因此您可以在文本输入中看到rafaelnadal ,因为它们是从托管Bean属性(即#{playersBean.playerName}#{playersBean.playerSurname} )。
  3. 您(作为用户)可以在文本输入中手动修改这些值(文本)(或像这样保留它们)。 现在,当您单击
    发送按钮,您实际上提交了具有当前值的表单(由<h:form>分隔的部分
    </h:form> )。 因此,将提交名称和姓氏,并覆盖/初始化数据模型中的当前值(即使您没有修改它们)。 在对视图进行编码(渲染)期间,JSF还将针对PlayersBean托管bean对视图参数进行编码。
  4. 此外,JSF注意到您想要在导航到下一个目标页面( results.xhtml )之前附加视图参数(将其信号告知: ?faces-redirect=true&amp;includeViewParams=true )。 在此请求的前面,已经根据PlayersBean托管bean评估了视图参数。 因此,JSF处理视图参数,并将根据视图参数名称和值计算出的相应查询字符串附加到操作URL。
  5. JSF导航到目标URL(现在包含查询字符串)。 这是可见的,多亏了faces-redirect=true

案例2

index.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata><h:form>Enter name:<h:inputText value="#{playersBean.playerName}"/>Enter surname:<h:inputText value="#{playersBean.playerSurname}"/><h:commandButton value="Send" action="results?faces-redirect=true&includeViewParams=true"/>                 
</h:form>

results.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/>
You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

PlayersBean我们有:

@Named
@RequestScoped
public class PlayersBean {private String playerName = "roger";private String playerSurname = "federer";...
}

当应用程序到达index.xhtml时会发生什么? (无查询字符串)

  1. 没有查询字符串(没有请求参数)。 因此,无法从查询字符串初始化视图参数,并且它们在PlayersBean也未设置任何内容!
  2. 呈现视图(生成HTML标记并将其发送到浏览器),并且文本输入反映了
    roger和federer initalization数据(这些是评估#{playersBean.playerName}#{playersBean.playerSurname} )。
  3. 您(作为用户)可以在文本输入中(或不可以!)修改这些值。 现在,当您单击“ Send按钮时,您实际上提交了表单(属于由<h:form>界定的部分的数据
    </h:form> )。 因此,将提交名称和姓氏,并覆盖/初始化模型中的当前值(即使您没有修改它们)。 在对视图进行编码(渲染)期间,JSF还将针对PlayersBean托管bean对视图参数进行编码。
  4. 此外,JSF注意到您想要在导航到下一个目标页面( results.xhtml )之前附加视图参数(将其信号告知: ?faces-redirect=true&amp;includeViewParams=true )。 在此请求的前面,已经根据PlayersBean托管bean评估了视图参数。 因此,JSF处理视图参数,并将根据视图参数名称和值计算出的相应查询字符串附加到操作URL。
  5. JSF导航到目标URL(现在包含查询字符串)。 这是可见的,多亏了faces-redirect=true

案例3

index.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata><h:link value="Send" outcome="results" includeViewParams="true"/>

results.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/>
You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

PlayersBean我们有:

@Named
@RequestScoped
public class PlayersBean {private String playerName;private String playerSurname;...
}

当应用程序进入时发生了什么(设置查询字符串的方式并不重要;您可以手动进行操作,也可以通过 > 与 这里) index.xhtml?playernameparam=rafael&playersurnameparam=nadal吗?

  1. 请求参数的名称与视图参数的名称匹配,因此视图参数采用请求参数的值,并将其存储在playerNameplayerSurname下的托管bean中。 因此,您可以通过视图参数设置托管bean字段。
  2. 视图将被渲染(生成HTML标记并将其发送到浏览器),因此在文本输入中,您可以看到rafaelnadal文本,因为它们是从托管Bean提取的(这些是对#{playersBean.playerName}#{playersBean.playerSurname} )。 在对视图进行编码(渲染)期间,JSF还将针对PlayersBean托管bean对视图参数进行编码。 现在,检查页面的源代码,并注意,与<h:link>相对应的<a href>是按如下方式生成的(注意,这是已fix ! )。 因此,JSF将<h:link>转换为<a href>并从初始请求开始附加包含视图参数的查询字符串。 includeViewParams="true"属性会导致以下链接:
  3. 当您单击链接时,您不会提交任何数据 <h:link>绝不能在 <h:form> )。 您只需执行上面的静态HTML代码,这就是一个简单的GET请求!
  4. JSF通过此GET(包含查询字符串)导航到目标URL。 不需要faces-redirect=true

案例4

index.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata><h:link value="Send" outcome="results" includeViewParams="true"/>

results.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/>
You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

PlayersBean我们有:

@Named
@RequestScoped
public class PlayersBean {private String playerName = "roger";private String playerSurname = "federer";...
}

当应用程序到达index.xhtml时会发生什么? (无查询字符串)

  1. 没有请求参数。 因此,无法从查询字符串初始化视图参数。 view参数在托管bean中也没有设置任何内容!
  2. 视图已呈现(生成了HTML标记并将其发送到浏览器),因此您可以在文本输入中看到roger和federer ,因为它们是从托管Bean提取的(这些是评估#{playersBean.playerName}#{playersBean.playerSurname} )。 在对视图进行编码(渲染)期间,JSF还将针对PlayersBean托管bean(获取rogerfederer )对视图参数进行编码。 现在,检查页面的源代码,并注意,与<h:link>相对应的<a href>是按如下方式生成的(注意,这是已fix ! )。 因此,JSF将<h:link>转换为<a href>并从初始请求开始附加包含视图参数的查询字符串。 includeViewParams="true"属性会导致以下链接:
  3. 单击链接时,您不会提交任何数据。 您只需执行上面的静态HTML代码,这就是一个简单的GET请求!
  4. JSF通过此GET(包含查询字符串)导航到目标URL。 不需要
    faces-redirect=true

案例5

index.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata><h:link value="Send" outcome="results" includeViewParams="true"/>

results.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/>
You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

PlayersBean我们有:

@Named
@RequestScoped
public class PlayersBean {private String playerName;     // this is nullprivate String playerSurname;  // this is null...
}

当应用程序到达index.xhtml时会发生什么? (无查询字符串)

  1. 没有请求参数。 因此,无法从查询字符串初始化视图参数。 view参数在bean中没有设置任何内容!
  2. 视图已呈现(生成了HTML标记并将其发送到浏览器),因此您无法在文本输入中看到任何内容,因为它们是从Bean中获取的(这些是#{playersBean.playerName}#{playersBean.playerSurname}均为null –您不能期望看到文本为null! )。 在对视图进行编码(渲染)期间,JSF还将针对PlayersBean托管bean(获得null )对视图参数进行编码。 现在,检查页面的源代码,并注意,与<h:link>相对应的<a href>是按如下方式生成的(注意,这是已fix ! )。 因此,JSF将<h:link>转换为<a href> ,但是没有包含视图参数的查询字符串,因为JSF看到了includeViewParams="true"属性,但是无法生成以下HTML:<a href =” /…/results.xhtml? playernameparam = null &amp; playersurnameparam = null “>发送</a>”因此,JSF将“忽略” null值,并且没有要附加的查询字符串:<a href=”/…/results.xhtml”>发送</a>
  3. 单击链接时,您不会提交任何数据。 您只需执行上面的静态HTML代码,这就是一个简单的GET请求!
  4. JSF通过此GET(包含查询字符串)导航到目标URL。 不需要faces-redirect = true。

案例6 –为了更好地理解

index.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata><h:form>Enter name:<h:inputText value="#{playersBean.playerName}"/>Enter surname:<h:inputText value="#{playersBean.playerSurname}"/><h:commandButton value="Send" action="results?faces-redirect=true&includeViewParams=true"/>                 
</h:form>

results.xhtml页面中,我们有:

<f:metadata><f:viewParam name="playernameparam" value="#{playersBean.playerName}"/>           <f:viewParam name="playersurnameparam" value="#{playersBean.playerSurname}"/>
</f:metadata>You requested name: <h:outputText value="#{playersBean.playerName}"/><br/>
You requested surname: <h:outputText value="#{playersBean.playerSurname}"/>

PlayersBean我们有:

@Named
@RequestScoped
public class PlayersBean {private String playerName;     // this is nullprivate String playerSurname;  // this is null...
}

当应用程序到达index.xhtml时会发生什么? (无查询字符串)

  1. 没有请求参数。 因此,无法从查询字符串初始化视图参数。 view参数在bean中也没有设置任何内容!
  2. 渲染视图(生成HTML标记并将其发送到浏览器),您可以看到两个空文本输入(这些是评估#{playersBean.playerName}#{playersBean.playerSurname} )。 您不能期望看到文本,为空!
  3. 作为用户,请勿在这些文本输入中键入任何内容,然后按“ Send按钮。 实际上,您将提交表单(属于由<h:form> </h:form>界定的部分的数据)。 因此,将提交名称和姓氏(它们是空白),并覆盖/初始化模型中的当前值。 在对视图进行编码(渲染)期间,JSF还将对PlayersBean托管bean的视图参数进行编码(将获得空白)。
  4. 此外,JSF注意到您想要在导航到下一个目标页面( results.xhtml )之前附加视图参数(将其信号告知: ?faces-redirect=true&amp;includeViewParams=true )。 在此请求的前面,已经根据PlayersBean托管bean评估了视图参数。 因此,JSF处理视图参数,并将根据视图参数名称和值计算出的相应查询字符串附加到操作URL。
  5. JSF导航到目标URL(现在包含查询字符串)。 这是可见的,多亏了faces-redirect=true

http://localhost:8080/.../results.xhtml?playernameparam=&playersurnameparam=

注意playernameparamplayersurnameparam!的值playersurnameparam! 由于您已提交空白区域,因此您将看到。 当然,这看起来“丑陋”且毫无用处。 也许您更喜欢将空白视为null值。 为此,您可以在web.xml设置以下上下文参数:

<context-param><param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name><param-value>true</param-value>
</context-param>

现在,清理并构建应用程序,然后在相同的情况下再次运行它。 这次,当您按
发送按钮,您会注意到此链接:

  • http:// localhost:8080 / ch2_6 / faces / results.xhtml

因此,没有查询字符串反映了视图参数的存在! 好吧,您只是指示JSF将提交的空字符串视为null值。 但是,如您所知,附加了视图参数后,“ null值”将被“忽略”。

注意

附加视图参数的方式可以在Mojarra的com.sun.faces.application.view.MultiViewHandler看到。 特别是在:

// Mojarra 2.2.9, MultiViewHandler#addViewParameters()
protected void addViewParameters(FacesContext ctx,String viewId,Map<String,List<String>> existingParameters) {UIViewRoot currentRoot = ctx.getViewRoot();String currentViewId = currentRoot.getViewId();Collection<UIViewParameter> toViewParams = Collections.emptyList();Collection<UIViewParameter> currentViewParams;boolean currentIsSameAsNew = false;currentViewParams = ViewMetadata.getViewParameters(currentRoot);if (currentViewId.equals(viewId)) {currentIsSameAsNew = true;toViewParams = currentViewParams;} else {ViewDeclarationLanguage pdl = getViewDeclarationLanguage(ctx, viewId);ViewMetadata viewMetadata = pdl.getViewMetadata(ctx, viewId);if (null != viewMetadata) {UIViewRoot root = viewMetadata.createMetadataView(ctx);toViewParams = ViewMetadata.getViewParameters(root);}}if (toViewParams.isEmpty()) {return;}for (UIViewParameter viewParam : toViewParams) {String value = null;// don't bother looking at view parameter if it's been overriddenif (existingParameters.containsKey(viewParam.getName())) {continue;}if (paramHasValueExpression(viewParam)) {value = viewParam.getStringValueFromModel(ctx);}if (value == null) {if (currentIsSameAsNew) {value = viewParam.getStringValue(ctx);} else {value = getStringValueToTransfer(ctx, viewParam, currentViewParams);}}// SO, IF VALUE IS NULL, DON'T CONSIDER THIS A VIEW PARAMif (value != null) {List<String> existing = existingParameters.get(viewParam.getName());if (existing == null) {existing = new ArrayList<String>(4);existingParameters.put(viewParam.getName(), existing);}existing.add(value);}}
}

翻译自: https://www.javacodegeeks.com/2015/11/how-view-parameters-are-obtainedattached-fromto-the-url-query-string-examples.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

桌面怎么设置 计算机 网络,Win10 10130桌面电脑网络图标怎么设置?

越来越多朋友的计算机安装Windows10系统&#xff0c;现在Windows10系统已经升级到10130版&#xff0c;我的计算机升级到了10130版。安装Windows10的10130版系统后&#xff0c;桌面只有回收站和软媒的图标&#xff0c;如何把电脑、网络、用户的文件、控制面板等图标设置到桌面上…

swift 打开第三方应用_iOS卡通人物帧动画入门9(大结局):番外篇-扩展第三方类

扩展第三方类细心的朋友可能会发现&#xff0c;我们前面计算主角的大小用的总是同一方向第一帧纹理的大小&#xff0c;如果纹理大小有出入的话&#xff0c;会产生较大的偏差&#xff0c;最好的方法是取当前动画帧纹理的大小。不过这有些难度&#xff0c;所以我们退之求其次&…

awk说明书(转)

ref&#xff1a;http://blog.chinaunix.net/uid-429659-id-122573.html awk使用手册 作者&#xff1a;awk使用手册什么是awk? 你可能对UNIX比较熟悉&#xff0c;但你可能对awk很陌生&#xff0c;这一点也不奇怪&#xff0c;的确&#xff0c;与其优秀的功能相比&#xff0c;awk…

jpa jdbc jndi_没有J2EE容器的JNDI和JPA

jpa jdbc jndi我们希望通过尽可能简单的设置来测试一些JPA代码。 计划仅使用Java和Maven&#xff0c;不使用应用程序服务器或其他J2EE容器。 我们的JPA配置需要两件事才能成功运行&#xff1a; 数据库来存储数据&#xff0c; JNDI访问数据库。 这篇文章分为两个部分。 第一部…

本科计算机应用水平,湖南工程学院全日制非计算机专业本科生参加湖南省计算机应用水平等级考试的规定...

根据省教育厅《关于印发湖南省普通高等学校非计算机专业学生计算机应用水平等级考试大纲的通知》(湘教发〔2012〕58号)精神&#xff0c;经研究&#xff0c;现对我校全日制非计算机专业本科生参加计算机等级考试有关事项作如下规定&#xff1a;1&#xff0e;凡我校全日制非计算机…

Linux umask限制导致php的mkdir 0777无效

原因:mkdir权限受当前linux umask限制 解决方法: 1 $oldmask umask(0); 2 mkdir("test", 0777); 3 umask($oldmask); 参考SO:http://stackoverflow.com/a/3997671/4009148转载于:https://www.cnblogs.com/gy1010/p/6674243.html

cstringw转lpctstr_新手必看:CString 和 LPCTSTR等之间的转换大全 | 求索阁

CString 和 LPCTSTR 可以说通用。 原因在于CString定义的自动类型转换&#xff0c;没什么奇特的&#xff0c;最简单的C操作符重载而已。常量字符串ansi和unicode的区分是由宏_T来决定的。但是用_T( "abcd ")时&#xff0c; 字符串 "abcd "就会根…

vue如何过滤html标签,去除富文本中的html标签及vue、react、微信小顺序中的过滤器...

在猎取富文本后&#xff0c;又只需显现部分内容&#xff0c;须要去除富文本标签&#xff0c;然后再截取个中一部分内容&#xff1b;然后就是过滤器&#xff0c;在微信小顺序中运用照样挺屡次的&#xff0c;在vue及react中也遇到过1.富文本去除html标签去除html标签及 空格let r…

在基于简单Vertx Rest的应用程序上为REST资源设置基本响应HTTP标头

我是Vert.x的新手&#xff0c;但是作为Java开发人员&#xff08;非常努力&#xff09;&#xff0c;与NodeJS或其他任何基于Reactor的框架/库相比&#xff0c;我觉得它更加有趣并且很有前途。 因此&#xff0c;我正在使用Vert.x实现一个非常简单的Restful API。 今天的问题是我…

OAuth2认证有一定的了解

转到分享界面后&#xff0c;进行OAuth2认证&#xff1a; 以新浪为例&#xff1a; 第一步、WebView加载界面&#xff0c;传递参数 使用WebView加载登陆网页&#xff0c;通过Get方法传递三个参数&#xff1a;应用的appkey、回调地址和展示方式display(如手机设备为mobile)&#x…

声速的测量的实验原理和应用_CEMS烟气在线分析仪测量原理计经典应用

烟气连续在线监测系统运用抽取冷凝采样、后散射烟尘浓度测量、皮托管烟气流速测量及计算机网络通讯技术&#xff0c;实现了固定污染源污染物排放浓度和排放总量的在线连续监测。同时又针对国内煤种较杂、煤质变化大、污染物排放浓度高、烟气湿度大的状况从技术上进行了改进。并…

怎么用计算机算弧度制,怎么设置计算器 把度数转化为弧度

计算器默认角度制(D)。此时&#xff0c;按下mode&#xff0c;mode&#xff0c;2(Rad)&#xff0c;可将计算器调整为弧度制。输入要转化的角度(如30)&#xff0c;按下shift&#xff0c;ans(DRG三角)&#xff0c;1(D)&#xff0c;画面将显示30度&#xff0c;按下等号&#xff0c;…

Python 类方法、实例方法、静态方法

实例方法&#xff1a;类中第一个参数为self的方法。 类方法&#xff1a;类中第一个参数为类&#xff0c;约定写为cls&#xff0c;并被classmethod修饰的方法。 静态方法&#xff1a;类中被staticmethod修饰的方法。 类变量&#xff1a;定义在类的定义之后&#xff0c;如&#x…

python 方程组 整数解_用Python语言求解线性整数方程组

我在寻找一种用Python求解线性方程组的方法。特别是&#xff0c;我在寻找大于所有零的最小整数向量&#xff0c;并解出给定的方程。例如&#xff0c;我有以下等式&#xff1a;想解决。在在这种情况下&#xff0c;求解该方程的最小整数向量为。在但是&#xff0c;如何自动确定此…

计算机软件水平考试调整,全国计算机等级考试调整方案

考生们注意&#xff1a;在新的历史时期&#xff0c;全国计算机等级考试将在保持自身特色&#xff0c;稳定发展的基础上进一步推进考试改革&#xff0c;从2018年3月起&#xff0c;教育部考试中心将实施2018年考试大纲&#xff0c;并按新体系开考各个考试级别&#xff0c;希望能帮…

javaserver_集成Spring和JavaServer Faces:改进的模板

javaserver随着2.0版的发布&#xff0c;Facelet模板成为JSF规范的核心部分。 使用<ui&#xff1a;composition>和<ui&#xff1a;decorate>标记&#xff0c;可以轻松构建复杂的页面&#xff0c;同时仍保持标记的整洁。 模板在创建HTML表单时特别有用&#xff0c;但…

datagrid 什么时候结束编辑_孕吐到底什么时候结束

很多女性刚怀孕&#xff0c;都会出现妊娠反应&#xff0c;比如孕吐。它是由妊娠后绒毛分泌的绒毛膜促进腺激素引起的&#xff0c;在妊娠初期腺激素分泌量较多。备受孕吐折磨的女性&#xff0c;每次吃饭&#xff0c;一闻到刺激性味道&#xff0c;就会想吐&#xff0c;非常难受&a…

201521123032 《Java程序设计》第7周学习总结

1. 本周学习总结 以你喜欢的方式&#xff08;思维导图或其他&#xff09;归纳总结集合相关内容。 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 在contains方法中调用indexOF方法&#xff0c;首先比较下标o&#xff0c;如果onull那么elementData[]中是否n…

计算机图形图像电影论文,计算机图形图像绘制技术地现状分析及应用发展.doc...

计算机图形图像绘制技术地现状分析及应用发展计算机图形图像绘制技术的现状分析及应用发展-计算机论文计算机图形图像绘制技术的现状分析及应用发展金晓倩 JIN Xiao-qian(四川建筑职业技术学院&#xff0c;德阳618000)(Sichuan College of Architectural Technology&#xff0c…

Java EE 7之前版本替代JPA 2.1的非同步持久性上下文

Java EE 7中的非同步持久性上下文 JPA 2.1引入了非同步持久性上下文的概念&#xff0c;该概念允许对JPA实体管理器的刷新进行细粒度控制&#xff0c;即通过显式调用EntityManager&#xff03;joinTransaction 。 以前&#xff0c;这默认情况下是JTA事务的结束&#xff0c;例如&…