基本上我有一个if..else逻辑如下
<api xmlns="http://ws.apache.org/ns/synapse" name="ConcatAPI" context="/concat">
<resource methods="GET">
<inSequence>
<call>
<endpoint>
<http method="GET" uri-template="http://www.mocky.io/v2/56b2d88c13000057518945d4"/>
</endpoint>
</call>
<enrich>
<source type="body" clone="true"/>
<target type="property" property="first-json"/>
</enrich>
<log level="custom">
<property name="First json" expression="get-property('first-json')"/>
</log>
<call>
<endpoint>
<http method="GET" uri-template="http://www.mocky.io/v2/56b2d87d1300007c518945d3"/>
</endpoint>
</call>
<payloadFactory media-type="xml">
<format>
<completeJson xmlns="">
<firstjson>$1</firstjson>
<secondjson>$2</secondjson>
</completeJson>
</format>
<args>
<arg evaluator="xml" expression="get-property('first-json')"/>
<arg evaluator="xml" expression="$body"/>
</args>
</payloadFactory>
<property name="messageType" value="application/json" scope="axis2"/>
<send/>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>
但是在更新过程中,“action”参数没有附加URL,因此抛出了NullPoitnerException。
任何修复方案? 提前致谢!
答案 0 :(得分:0)
在 Java 8 中,您可以这样做
Optional<String> paramOptional=Optional.ofNullable(request.getParameter());
paramOptional.ifPresent(param->{
//Do something with param
});
OR
String param =paramOptional.orElse("you else string");//if null then this string will be return
答案 1 :(得分:0)
如果request.getParameter(x)
在未设置x
时返回 null ,则可以简单地在if子句中交换这两个条件。
因此
if(request.getParameter("action")=="delete" && request.getParameter("action")!=null)
会变成
if(request.getParameter("action")!=null && request.getParameter("action")=="delete")
由于&&
是Java中的short-circuit 布尔值和,因此只有在{{1}之前的部分才会执行语句的后半部分计算到 true - 从而防止你的NullPointerException。
&&
是与字符串文字的比较。您最好使用.equals()
代替。