看来我找到了一个很好的方法。
只需通过在 post 方法上返回 h.view 来返回视图中的错误数据以及页面绑定到的所有其他数据。然后使用您正在使用的任何模板插件来呈现错误消息或不取决于数据。
{
method: 'POST',
path: currentPath,
options: {
validate: {
options: { abortEarly: false },
payload: Joi.object({
isAgent: Joi.string().required()
}),
failAction: (request, h, err) => {
const errorList = []
const fieldError = findErrorList(err, [isAgent])[0]
if (fieldError) {
errorList.push({
text: fieldError,
href: `#${field}`
})
}
return h.view(viewTemplate, createModel(errorList, request.payload, null)).takeover()
}
},
handler: async (request, h) => {
return h.redirect(nextPath);
}
},
}