是否可以从 RequestWrapper 对象中提取属性(如 XML 属性值)?
在我的实现中,我想使用属性的值,但不能用@WebParam 引用它,因为这仅适用于元素(我相信)
@SOAPBinding 定义为“文档/文字/包装”
WSDL(相关部分,目标属性位于 **):
<s:element name="GetStatus">
<s:complexType>
<s:element minOccurs="0" maxOccurs="1" name="Entity" type="s0:Entity"/>
**<s:attribute name="Handle" type="s:string"/>
</s:complexType>
</s:element>
<s:element name="GetStatusResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="StatusCode" type="s0:StatusCode"/>
<s:element minOccurs="0" maxOccurs="1" name="Server" type="s0:Server"/>
</s:sequence>
</s:complexType>
</s:element>
<message name="GetStatusIn">
<part name="parameters" element="s0:GetStatus"/>
</message>
<message name="GetStatusOut">
<part name="parameters" element="s0:GetStatusResponse"/>
</message>
<portType name="Service">
<operation name="GetStatus">
<input message="s0:GetStatusIn"/>
<output message="s0:GetStatusOut"/>
</operation>
</portType>
SEI 抽象方法(能够使用 WebParam 指定 XML 元素):
@WebMethod(operationName="GetStatus")
@RequestWrapper(localName=“GetStatus",className="com.example.GetStatus")
@ResponseWrapper(localName=“GetStatusResponse",className="com.example.GetStatusResponse")
public void getStatus(
@WebParam(name="Entity”)Entity entity,
@WebParam(name="StatusCode",mode=WebParam.Mode.OUT)Holder<StatusCode> statusCode,
@WebParam(name="Server", mode=WebParam.Mode.OUT)Holder<Server> server
);
执行:
@Override
public void getStatus(
Entity entity,
Holder<StatusCode> statusCode,
Holder<Server> server
) { ... }
很明显,我如何读取 @RequestWrapper bean状态的值(通过 @WebParam 的实体),但是有什么方法可以访问状态中的值(句柄)。据我了解,WebParam 不支持属性,只支持元素。
另一种询问/寻求解决方案的方法可能是询问如何访问 RequestWrapper 引用的完整 bean,在本例中为GetStatus。
我知道如果我转换到 Document/Literal/Bare,我可以简单地让参数和返回值反映 bean,但我更喜欢使用 Wrapped 来解决这个问题,因为所有信息都指向这是最广泛首选的绑定。