- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我收到一个错误,如 Component ID component has already been found in the view inside tree table column tag with id=col1。对于这个单个 xhtml 文件,我有两个托管 Bean,并且都在 session 范围内。
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Category and Brand Manage Page</title>
</h:head>
<h:body>
<ui:composition template="/templates/layout.xhtml">
<ui:define name="content">
<h:form id="productform" enctype="multipart/form-data" rendered="#{loginManagedBean.isLoggedIn}">
<p:growl id="messages" autoUpdate="true" redisplay="false" showDetail="true"/>
<p:panel header="Brand Management" id="brandpanel">
<h:panelGrid columns="2" cellspacing="20">
<p:outputLabel value="Branch Name"/>
<p:selectOneMenu id="branchname" value="#{brandManagedBean.branchId}" style="width: 200px;">
<f:selectItem itemLabel="Select Branch" itemValue=""/>
<f:selectItems value="#{brandManagedBean.branchNamesMap}"/>
<p:ajax listener="#{brandManagedBean.selectBrands()}" update="brandpanel"/>
</p:selectOneMenu>
<p:outputLabel value="Brand Name"/>
<p:selectOneMenu id="brandname" value="#{brandManagedBean.id}" style="width: 200px;">
<f:selectItem itemLabel="Select Brands" itemValue=""/>
<f:selectItems value="#{brandManagedBean.brandNamesMap}"/>
<p:ajax event="change"/>
</p:selectOneMenu>
<p:outputLabel value="New or update brand name"/>
<p:inputText value="#{brandManagedBean.name}">
<p:ajax event="change"/>
</p:inputText>
</h:panelGrid>
<h:panelGrid columns="3">
<p:commandButton update="brandpanel" actionListener="#{brandManagedBean.insertBrand()}" value="Add"/>
<p:commandButton update="brandpanel" actionListener="#{brandManagedBean.updateBrand()}" value="Update"/>
<p:commandButton update="brandpanel" actionListener="#{brandManagedBean.deleteBrand()}" value="Delete"/>
</h:panelGrid>
</p:panel>
<p:panel header="Category Management" id="categorypanel">
<h:panelGrid columns="2" cellspacing="20">
<p:outputLabel value="Branch Name"/>
<p:selectOneMenu id="categorybranchname" value="#{categoryManagedBean.branchId}" style="width: 200px;">
<f:selectItem itemLabel="Select Branch" itemValue=""/>
<f:selectItems value="#{categoryManagedBean.branchNamesMap}"/>
<p:ajax listener="#{categoryManagedBean.selectFloors()}" update="categorypanel"/>
</p:selectOneMenu>
<p:outputLabel value="Floor Name"/>
<p:selectOneMenu id="categoryfloorname" value="#{categoryManagedBean.floorId}" style="width: 200px;">
<f:selectItem itemLabel="Select Floor" itemValue=""/>
<f:selectItems value="#{categoryManagedBean.floorsMap}"/>
<p:ajax listener="#{categoryManagedBean.selectCategories()}" update="categorypanel"/>
<p:ajax listener="#{categoryManagedBean.loadTreeTable()}" update="categorytree"/>
</p:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="4">
<p:outputLabel value="Category Name"/>
<p:selectOneMenu id="categoryname" value="#{categoryManagedBean.catId}" style="width: 200px;">
<f:selectItem itemLabel="Select Category" itemValue=""/>
<f:selectItems value="#{categoryManagedBean.categoryMap}"/>
<p:ajax listener="#{categoryManagedBean.selectSubCategory1()}" update="categorypanel"/>
</p:selectOneMenu>
<p:outputLabel value="New Category Name"/>
<p:inputText value="#{categoryManagedBean.catName}">
<p:ajax event="change"/>
</p:inputText>
</h:panelGrid>
<h:panelGrid columns="4">
<p:outputLabel value="Item Name"/>
<p:selectOneMenu id="subcategoryname" value="#{categoryManagedBean.subcat1Id}" style="width: 200px;">
<f:selectItem itemLabel="Select Item" itemValue=""/>
<f:selectItems value="#{categoryManagedBean.subCategory1Map}"/>
<p:ajax event="change"/>
</p:selectOneMenu>
<p:outputLabel value="New Item Name"/>
<p:inputText value="#{categoryManagedBean.subcat1Name}">
<p:ajax event="change"/>
</p:inputText>
</h:panelGrid>
<h:panelGrid columns="3">
<p:commandButton update="categorypanel" actionListener="#{categoryManagedBean.insertCategory()}" value="Add"/>
</h:panelGrid>
<p:treeTable id="categorytree" value="#{categoryManagedBean.root}" var="catdto"
selectionMode="single" selection="#{categoryManagedBean.selectNode}">
<f:facet id="face1" name="header">
Categories
</f:facet>
<p:column id="col1">
<f:facet name="header" id="face2">
Category Name
</f:facet>
<h:outputLabel id="out1" value="#{catdto.name}"/>
</p:column>
<p:column id="col2">
<f:facet name="header" id="face3">
Edit
</f:facet>
<p:commandLink id="com1" update=":productform:documentPanel" oncomplete="PF('documentDialog').show()" title="Update Form" styleClass="ui-icon ui-icon-pencil" >
<f:setPropertyActionListener value="#{catdto}" target="#{categoryManagedBean.selectedCategoryDto}" />
</p:commandLink>
</p:column>
<p:column id="col3">
<f:facet name="header" id="face4">
Delete
</f:facet>
<p:commandLink id="com2" action="#{categoryManagedBean.deleteCategory(category)}" type="button"
style="float: right; background-image: url('../resources/images/delete.jpg'); background-repeat: no-repeat;
background-size: 100% 100%; background-origin : border-box; width: 30px; height: 20px;">
</p:commandLink>
</p:column>
</p:treeTable>
</p:panel>
<p:dialog id="dialog" header="Update Form" showEffect="fade" widgetVar="documentDialog" modal="false" maximizable="true" minimizable="true">
<p:outputPanel id="documentPanel">
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel for="name" value="Category: " />
<p:inplace id="basic">
<h:inputText id="name" value="#{categoryManagedBean.selectedCategoryDto.name}" style="font-weight:bold" />
</p:inplace>
<h:panelGrid columns="2" style="margin-left: 100px">
<p:commandButton action="#{categoryManagedBean.updateCategory()}" value="Update" ajax="false" update=":categorypanel"/>
<p:commandButton action="#{categoryManagedBean.clear}" value="Clear" id="btnclear" ajax="false" />
</h:panelGrid>
</h:panelGrid>
</p:outputPanel>
</p:dialog>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
堆栈跟踪
SEVERE: JSF1007: Duplicate component ID productform:categorytree:col1 found in view.
Dec 12, 2013 5:27:01 PM com.sun.faces.util.Util checkIdUniqueness
SEVERE: +id: j_id1
type: javax.faces.component.UIViewRoot@9ce387
+id: javax_faces_location_HEAD
type: com.sun.faces.component.ComponentResourceContainer@1f54217
+id: j_id2
type: javax.faces.component.UIOutput@c5f91c
+id: j_id3
type: javax.faces.component.UIOutput@165c08a
+id: j_id4
type: javax.faces.component.UIOutput@143b527
+id: j_id5
type: javax.faces.component.UIOutput@2a237a
+id: j_id6
type: javax.faces.component.UIOutput@7f29f4
+id: j_id7
type: javax.faces.component.UIOutput@9b66f1
+id: j_id8
type: javax.faces.component.UIOutput@837332
+id: j_id9
type: javax.faces.component.UIOutput@1fffbc8
+id: j_idt1
type: <html xmlns="http://www.w3.org/1999/xhtml">
+id: j_idt2
type: javax.faces.component.UIOutput@1ddf77
+id: j_idt3
type:
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<title>Madharsha Control Panel Page</title>
+id: j_idt4
type: javax.faces.component.html.HtmlBody@14ba6a4
+id: j_idt5
type: org.primefaces.component.layout.Layout@1a96d23
+id: header
type: org.primefaces.component.layout.LayoutUnit@3c41cb
+id: j_idt6
type: org.primefaces.component.outputlabel.OutputLabel@39137
+id: j_idt7
type: org.primefaces.component.layout.LayoutUnit@32e320
+id: layoutform
type: javax.faces.component.html.HtmlForm@dd4f1b
+id: rootmenu
type: org.primefaces.component.menubar.Menubar@1747f49
+id: homemenu
type: org.primefaces.component.menuitem.UIMenuItem@150d2fe
+id: mastermenu
type: org.primefaces.component.submenu.UISubmenu@14c3f17
+id: j_idt8
type: org.primefaces.component.menuitem.UIMenuItem@c23503
+id: j_idt9
type: org.primefaces.component.menuitem.UIMenuItem@265e80
+id: tabletmenu
type: org.primefaces.component.menuitem.UIMenuItem@1063704
+id: logoutmenu
type: org.primefaces.component.menuitem.UIMenuItem@105ea2f
+id: loginmenu
type: org.primefaces.component.menuitem.UIMenuItem@151e258
+id: productform
type: javax.faces.component.html.HtmlForm@e33152
+id: messages
type: org.primefaces.component.growl.Growl@1bb22d9
+id: brandpanel
type: org.primefaces.component.panel.Panel@ed0cd7
+id: j_idt10
type: javax.faces.component.html.HtmlPanelGrid@e60409
+id: j_idt11
type: org.primefaces.component.outputlabel.OutputLabel@11325cd
+id: branchname
type: org.primefaces.component.selectonemenu.SelectOneMenu@16e471
+id: j_idt12
type: javax.faces.component.UISelectItem@efdaaa
+id: j_idt13
type: javax.faces.component.UISelectItems@fcd37b
+id: j_idt14
type: org.primefaces.component.outputlabel.OutputLabel@a04e7e
+id: brandname
type: org.primefaces.component.selectonemenu.SelectOneMenu@814915
+id: j_idt15
type: javax.faces.component.UISelectItem@1e52afd
+id: j_idt16
type: javax.faces.component.UISelectItems@697520
+id: j_idt17
type: org.primefaces.component.outputlabel.OutputLabel@1888b29
+id: j_idt18
type: org.primefaces.component.inputtext.InputText@1686d07
+id: j_idt19
type: javax.faces.component.html.HtmlPanelGrid@ce1366
+id: j_idt20
type: org.primefaces.component.commandbutton.CommandButton@15b920e
+id: j_idt21
type: org.primefaces.component.commandbutton.CommandButton@d1de09
+id: j_idt22
type: org.primefaces.component.commandbutton.CommandButton@482a86
+id: categorypanel
type: org.primefaces.component.panel.Panel@1dfcbc3
+id: j_idt23
type: javax.faces.component.html.HtmlPanelGrid@1baa99d
+id: j_idt24
type: org.primefaces.component.outputlabel.OutputLabel@1d590a3
+id: categorybranchname
type: org.primefaces.component.selectonemenu.SelectOneMenu@afcd9
+id: j_idt25
type: javax.faces.component.UISelectItem@15e0b9b
+id: j_idt26
type: javax.faces.component.UISelectItems@14bfd33
+id: j_idt27
type: org.primefaces.component.outputlabel.OutputLabel@1dc4c0b
+id: categoryfloorname
type: org.primefaces.component.selectonemenu.SelectOneMenu@485e7
+id: j_idt28
type: javax.faces.component.UISelectItem@f326a7
+id: j_idt29
type: javax.faces.component.UISelectItems@16ed6d9
+id: j_idt30
type: javax.faces.component.html.HtmlPanelGrid@1db4fa7
+id: j_idt31
type: org.primefaces.component.outputlabel.OutputLabel@14a8a00
+id: categoryname
type: org.primefaces.component.selectonemenu.SelectOneMenu@aa4749
+id: j_idt32
type: javax.faces.component.UISelectItem@12e467c
+id: j_idt33
type: javax.faces.component.UISelectItems@11589f6
+id: j_idt34
type: org.primefaces.component.outputlabel.OutputLabel@1147608
+id: j_idt35
type: org.primefaces.component.inputtext.InputText@511e57
+id: j_idt36
type: javax.faces.component.html.HtmlPanelGrid@19eef40
+id: j_idt37
type: org.primefaces.component.outputlabel.OutputLabel@16d756e
+id: subcategoryname
type: org.primefaces.component.selectonemenu.SelectOneMenu@138c603
+id: j_idt38
type: javax.faces.component.UISelectItem@50093a
+id: j_idt39
type: javax.faces.component.UISelectItems@8dea14
+id: j_idt40
type: org.primefaces.component.outputlabel.OutputLabel@102f163
+id: j_idt41
type: org.primefaces.component.inputtext.InputText@35cd5d
+id: j_idt42
type: javax.faces.component.html.HtmlPanelGrid@3dc0e2
+id: j_idt43
type: org.primefaces.component.commandbutton.CommandButton@4269de
+id: categorytree
type: org.primefaces.component.treetable.TreeTable@349f31
+id: j_idt44
type:
Categories
+id: col1 <===============
type: org.primefaces.component.column.Column@eb38b5
+id: out1
type: javax.faces.component.html.HtmlOutputLabel@d802ee
+id: col2
type: org.primefaces.component.column.Column@1a88afb
+id: com1
type: org.primefaces.component.commandlink.CommandLink@3c7600
+id: col3
type: org.primefaces.component.column.Column@1671af2
+id: com2
type: org.primefaces.component.commandlink.CommandLink@1a2769
+id: col1 <===============
type: org.primefaces.component.column.Column@bf5e96
+id: j_idt45
type:
Category Name
+id: out1
type: javax.faces.component.html.HtmlOutputLabel@2e2067
+id: col2
type: org.primefaces.component.column.Column@51703d
+id: j_idt46
type:
Edit
+id: com1
type: org.primefaces.component.commandlink.CommandLink@9fc24a
+id: col3
type: org.primefaces.component.column.Column@8cb5ba
+id: j_idt47
type:
Delete
+id: com2
type: org.primefaces.component.commandlink.CommandLink@1eef7db
+id: dialog
type: org.primefaces.component.dialog.Dialog@1d26686
+id: documentPanel
type: org.primefaces.component.outputpanel.OutputPanel@491682
+id: j_idt48
type: javax.faces.component.html.HtmlPanelGrid@64db02
+id: j_idt49
type: javax.faces.component.html.HtmlOutputLabel@1667f48
+id: basic
type: org.primefaces.component.inplace.Inplace@2e50af
+id: name
type: javax.faces.component.html.HtmlInputText@b34ab2
+id: j_idt50
type: javax.faces.component.html.HtmlPanelGrid@ed25ec
+id: j_idt51
type: org.primefaces.component.commandbutton.CommandButton@154ae8e
+id: btnclear
type: org.primefaces.component.commandbutton.CommandButton@90196c
+id: footer
type: org.primefaces.component.layout.LayoutUnit@753f4a
+id: j_idt52
type: org.primefaces.component.outputlabel.OutputLabel@18e3248
+id: j_idt53
type:
</html>
Dec 12, 2013 5:27:01 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/product/productmanage.xhtml]
java.lang.IllegalStateException: Component ID productform:categorytree:col1 has already been found in the view.
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:974)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:958)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:958)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:958)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:958)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:958)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:958)
at com.sun.faces.application.view.FaceletFullStateManagementStrategy.saveView(FaceletFullStateManagementStrategy.java:706)
at com.sun.faces.application.StateManagerImpl.saveView(StateManagerImpl.java:89)
at javax.faces.application.StateManager.getViewState(StateManager.java:593)
at com.sun.faces.context.PartialViewContextImpl.renderState(PartialViewContextImpl.java:454)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:322)
at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:57)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1896)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:425)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
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:51)
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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
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:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2430)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2419)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
最佳答案
我解决了这个错误。我不知道为什么 Jsf 需要在 bean 的构造函数中初始化所有的树节点。我用空字符串值初始化了所有树节点,然后一切正常。它适用于 Session/View Scoped bean。
更新:1由于不正确的 ajax 更新,也可能会发生此错误。我试图从每个组件发出 ajax 请求并更新整个面板(面板内的组件)。然后我将更新更改为仅更新特定 View ,例如。选择一个菜单。这里的解决方案是仅更新特定组件而不更新整个表单或 View 。
更新:2我在 web.xml 文件中将 param-value 从 false 更改为 true,然后这个问题就解决了,
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>true</param-value>
</context-param>
关于java - 在 View 中发现重复的组件 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20543070/
有谁知道蓝牙设备如何获取范围内可发现设备的设备 ID? 理想情况下,我正在寻找涉及蓝牙协议(protocol)最小实现的最简单解决方案。 一个起点会很好,我只是想创建一个设备,它可以以最小的功耗存储附
我有用于搜索Kibana中特定事件的查询,该查询与其他搜索一起保存,是否可以通过REST调用以编程方式更改它? 最佳答案 正如@Mohammad所说,所有与Kibana相关的元数据都存储在elasti
我正在使用带有这些注释的基本集成测试: @ExtendWith(SpringExtension::class) @SpringBootTest(classes = [SomeApplication::
以下是我的代码 HTML: Hello !! Javascript: $(function() { $('#content .child').click(function() {
我试图避免在每个 GDB session 中输入相同的命令。为此,我遵循了 rust discovery book 中的说明。但是当我通过 cargo run 运行程序时,程序没有像书中提到的那样工作
好的,我记得有一些命令可以放在 settings.py 文件中,这样基本上当您将 django 项目移动到另一个目录时,它就不会启动 foo-bar . 我知道我可以通过在它提到主目录的任何地方设置一
假设我正在制作一份注册表单。现在我希望它突出显示四个字段中的空白字段。现在我可以只执行一堆 if-else 语句,但这将花费很长时间。 假设我有以下代码: Javascript: if($firstn
我试图理解 C++ 中 regex 的逻辑 std::string s ("Ni Ni Ni NI"); std::regex e ("(Ni)"); std::smatch sm; std::re
运行时: vim /tmp/blah :q echo $? 我的退出状态为 1 .这破坏了包括 Git 在内的各种东西。如果我在没有 vimrc 的情况下运行 vim: vim -u NONE /tm
我无法通过“查找”来查找旧文件。我将我的发现链接到一个声明中,所有其他部分都运行良好。这是我所拥有的精简版。它搜索 $path 的目录树,并为找到的每个项目创建仅包含换行符的单独临时文件:所有文件、超
我已经多次看到这个问题,但没有一个答案对我有用。 我的 DotNet Core 应用程序失败 编码: public static void Main(string[] args) {
已解决见编辑 2 你好, 我一直在编写一个 Perl 程序来处理本地(专有)程序的自动升级(对于我工作的公司)。 基本上,它通过 cron 运行,不幸的是有内存泄漏(或类似的东西)。问题是泄漏只发生在
在 icCube 中创建到 Oracle 数据库的连接时,“选择现有数据库表”返回一个空的表列表。 连接很好,我可以查询模式创建 SQL 查询。 最佳答案 用户用作模式名称,但 Oracle 使用大写
我正在使用 VBA 循环遍历两个工作表上的行,如果它们匹配,则将工作表 2 中的行复制到工作表 1 中。 我的代码应该: 打开第二个工作簿 将所有信息复制到新工作表上的原始工作簿中 然后循环遍历原始工
当我尝试同步我的数据库时出现这个奇怪的错误: Unhandled rejection Error: Cyclic dependency found. roles is dependent of its
以编程方式发现 perl 模块具有的所有子例程的最佳方法是什么?这可以是一个模块、一个类(没有@EXPORT)或任何介于两者之间的东西。 编辑:下面的所有方法看起来都可以工作。我可能会在生产中使用 C
如何在“讨论”按钮左侧添加“共享”按钮。我希望该按钮与当前的“讨论”按钮具有相同的样式/颜色。 我从https://atmospherejs.com/joshowens/shareit添加了包 我将
我最近从 Netbeans 切换到 Eclipse,Eclipse 在我的项目中发现了许多 Netbeans 没有的语法错误,我不知道为什么。据可以看出,两个 IDE 都设置为使用 java 1.6。
我必须为我的项目设置一些不接受错误网址的规则。我为此使用正则表达式。 我的网址是“http://some/resource/location”。 此网址的开头、中间或结尾不应留有空格。 例如,这些空格
问题:鉴于作为 VMSS 的一部分启动的 N 个实例,我希望每个 Azure 实例上的应用程序代码能够发现其他对等实例的 IP 地址。我该怎么做? 总体目的是对实例进行集群,以提供主动被动 HA 或保
我是一名优秀的程序员,十分优秀!