禁用Javascript的前端Hapi服务器端验证结果



我正在研究在Node.js上使用Hapi框架来构建一个网站,要求它在浏览器中禁用javascript的情况下完全工作,而且我不能使用HTML5。

当发布表单数据时,我已经查看了Joi在服务器端执行验证的情况,这看起来很好,但我需要在前端很好地显示它,而不仅仅是返回错误代码,例如,在相关字段周围的红色边框,每个字段都有自定义的错误消息和错误摘要。

有办法做到这一点吗?或者有没有一个插件可以在不使用客户端javascript的情况下提供帮助?

看起来我找到了一个很好的方法。

只需在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);
}
},
}

最新更新