【问题标题】:Hapi Server Side Validation Results on Frontend with Javascript Disabled禁用 Javascript 的前端上的 Hapi 服务器端验证结果
【发布时间】:2022-10-05 19:06:00
【问题描述】:

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

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

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

    标签: node.js joi hapi


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 2010-09-14
      相关资源
      最近更新 更多