我必须忽视一些非常明显的事情.这个XPath表达式出了什么问题?我想得到一个与正则表达式匹配的表行数id?
selenium.getXpathCount("//tr[matches(@id,'data-row-\\d+')]");
Run Code Online (Sandbox Code Playgroud)
我越来越:
com.thoughtworks.selenium.SeleniumException:错误:无效的xpath [2]:// tr [匹配(@ id,'data-row-\d +')]
这是示例html:
<table>
<tbody>
<tr id="data-row-0"><td>foo</td></tr>
<tr id="data-row-1"><td>bar</td></tr>
<tr id="data-row-2"><td>baz</td></tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud) 我创建了一个SOAP拦截器,如CXF文档中所述:
public class SoapMessageInterceptor extends AbstractSoapInterceptor {
public SoapMessageInterceptor() {
super(Phase.USER_PROTOCOL);
}
public void handleMessage(SoapMessage soapMessage) throws Fault {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
并在Spring的应用程序上下文中将其注册到总线:
<cxf:bus>
<cxf:inInterceptors>
<ref bean="soapMessageInterceptor"/>
</cxf:inInterceptors>
</cxf:bus>
<jaxws:endpoint id="customerWebServiceSoap"
implementor="#customerWebServiceSoapEndpoint"
address="/customerService"/>
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我添加了REST服务:
<jaxrs:server id="customerWebServiceRest" address="/rest">
<jaxrs:serviceBeans>
<ref bean="customerWebServiceRestEndpoint" />
</jaxrs:serviceBeans>
</jaxrs:server>
Run Code Online (Sandbox Code Playgroud)
问题是SOAP拦截器现在也在REST请求上被触发,这导致在调用REST服务时出现类强制转换异常.
<ns1:XMLFault xmlns:ns1="http://cxf.apache.org/bindings/xformat">
<ns1:faultstring xmlns:ns1="http://cxf.apache.org/bindings/xformat">
java.lang.ClassCastException: org.apache.cxf.message.XMLMessage
cannot be cast to org.apache.cxf.binding.soap.SoapMessage
</ns1:faultstring>
</ns1:XMLFault>
Run Code Online (Sandbox Code Playgroud)
有没有办法只通过配置将拦截器限制为SOAP消息?
更新
看起来我错过了描述这个的文档中的页面.向下滚动到JAXRS过滤器和CXF拦截器之间的差异
我有一个numpy字符串数组.如果未定义数组中的值,则按预期打印None.是否可以为None值提供默认值?
例如,在下面我想要"_"而不是"无"
[[None B C]
[M None O]
[X Y None]]
Run Code Online (Sandbox Code Playgroud)
会成为
[[_ B C]
[M _ O]
[X Y _]]
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
String fullName = "";
switch(name) {
case "name1":
fullName = String.format("%s %s", name, "surname1");
break;
case "name2":
fullName = String.format("%s %s", name, "surname2");
break;
case "name3":
fullName = String.format("%s %s", name, "surname3");
break;
...
}
Run Code Online (Sandbox Code Playgroud)
(case后面有一个break语句,我只是没有写在这里)
所以问题是这样的:
有 16 个不同的 case 语句,除了 的参数之外,它们都具有完全相同的代码String.format()。
有什么办法可以简化这段代码吗?
注意:Java 8 是必须的