我有一个HttpInterceptor来捕获错误并在模态中显示它们.除了错误代码和消息之外,我还想显示响应的主体,它实际上包含更准确的错误描述(例如,在500内部服务器错误上).我怎样才能在角度上实现这一目标?(我使用的是4.3.6版本.)
我已经查看了相关的问题,但像HttpErrorResponse._body或类似的答案对我不起作用.此外,在控制台中检查错误响应时,HttpErrorResponse.error设置为null.
以下是我的拦截器目前的样子:
@Injectable()
export class HttpErrorInterceptor implements HttpInterceptor {
public constructor(private httpErrorService: HttpErrorService) { }
public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).do(event => {
}, (error: HttpErrorResponse) => {
console.log('HTTPERROR INTERCEPTOR');
console.log(error);
if (error.status >= 400) {
this.httpErrorService.onError(error);
}
});
}
}
Run Code Online (Sandbox Code Playgroud) 我尝试使用sed替换字符串中的所有美元符号.但是,不仅美元符号被替换,而且随后是整个字符串.
$ echo "abc $def ghi" | sed 's/$//g'
$ abc ghi
如果至少有一个数字跟随美元符号,则只有第一个非数字被替换之前的部分:
$ echo "abc $123def ghi" | sed 's/$//g'
$ abc def ghi
到底是怎么回事?
我的目标是能够在std :: vector上使用算术运算符.请考虑以下示例:
#include <vector>
using namespace std;
template <class S, class T, class U> vector<U> operator+(const vector<S> &a, const vector<T> &b){
vector<U> result;
result.reserve(a.size());
for(int i = 0; i < a.size();++i){
result[i] = a[i] + b[i];
}
return result;
}
int main(int argc, char** argv) {
vector<double> bla;
bla = bla + bla;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码无法编译,因为编译器无法推导出模板参数U(它不是MWE,但我试图提供一个有意义的示例).为什么会这样?我知道在这里使用三个模板参数可能没有意义.我的想法是,在类型S和T都提供匹配的"+" - 具有不同返回类型的实现的情况下,我可以同时处理这两种情况.或者是歧义问题?我只是想知道编译器是否应该无法推导出U.当然下面的代码工作正常:
#include <vector>
using namespace std;
template <class S, class T> vector<S> operator+(const vector<S> &a, const vector<T> &b){
vector<S> result;
result.reserve(a.size()); …Run Code Online (Sandbox Code Playgroud) 我正在构建一个使用 JPA (EclipseLink) 提供 JAX-RS REST 服务的应用程序。当通过 JSON 公开用户实体时,我@XmlTransient在某些字段(例如密码字段)上使用注释来将它们从 JSON 表示中隐藏起来。发送创建或更新 (POST/PUT) 操作时,我想再次填充缺失的字段,以便 JPA 正确执行操作。
我目前的方法是我有一个自定义JsonDeserializer,用于反序列化用户并添加缺少的字段。为此,我想注入(使用@Inject)一个UserFacadeREST处理 JPA 内容的bean。但是,此注入失败并且 bean 实例为null(这当然会导致NullPointerException)。
我的UserFacadeRESTbean注释如下:
@Stateless
@LocalBean
@Path(UserFacadeREST.PATH)
public class UserFacadeREST extends AbstractFacade<User> {
//...
}
Run Code Online (Sandbox Code Playgroud)
我的UserDeserilizer(自定义JsonDeserializer):
public class UserDeserializer extends JsonDeserializer<User> {
@Inject
private UserFacadeREST userFacade;
@Override
public User deserialize(JsonParser parser, DeserializationContext context) throws IOException,
JsonProcessingException {
JsonNode node = parser.getCodec().readTree(parser);
int userId = (Integer) …Run Code Online (Sandbox Code Playgroud)