我尝试使用def add_self_and_children
[self, children.order(:name).map{|c| c.add_self_and_children}].flatten
end
配置网关。我面临的问题是@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_original_);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
到泛型类型。
我直接使用HttpRequestExecutingMessageHandler
时找到了一些解决方案,但在通过setExpectedResponseType
处理配置时,我无法调用RestTemplate
接收HttpRequestExecutingMessageHandler
的{{1}}方法。
这是示例代码:
我的通用课程:
exchange
我对HttpRequestExecutingMessageHandler的配置:
RestTemplate
这是我尝试过的其中一个场景,另一个是这样做的:
ParameterizedTypeReference
但没有工作。
调试HttpRequestExecutingMessageHandler,我注意到当它试图确定期望的类型时,返回类型是: public class ListWrapperModel<T> {
public ListWrapperModel() {}
private List<T> list;
}
我是java新手,但我会假设 Map<String, Expression> uriVariableExp = getDefaultEndpointProperties();
SpelExpressionParser parser = new SpelExpressionParser();
uriVariableExp.put("id", parser.parseExpression("payload"));
String endpoint = "{host}/models?id={id}";
HttpRequestExecutingMessageHandler gateway;
gateway = new HttpRequestExecutingMessageHandler(endpoint, getRestTemplate());
gateway.setRequiresReply(true);
gateway.setHttpMethod(HttpMethod.GET);
gateway.setExpectedResponseType(new ParameterizedTypeReference<ListWrapperModel<Model>>(){}.getClass());
gateway.setUriVariableExpressions(uriVariableExp);
return gateway;
是创建的匿名类型。
我想问一下是否有办法配置它以便可以正常工作。
谢谢!
答案 0 :(得分:4)
我设法通过使用响应类型值表达式来解决问题。以下设置对我有用:
ParameterizedTypeReference<ListWrapperModel<Model>> type = new ParameterizedTypeReference<ListWrapperModel<Model>>() { };
gateway.setExpectedResponseTypeExpression(new ValueExpression<>(type));
稍后会将值表达式计算为提供的ParameterizedTypeReference
,基础RestTemplate
将用于转换结果。