转:Struts Validator一時的粗心大意

Prometheus+Grafana+alertmanager+PrometheusAlert监控告警 实现飞书告警 以上 是以grafana做的邮件告警,但是感觉邮件很少人看。下面是以webhook 可以接入。启动alertmanager (设置 开机在启动)下载prometheusalter 配置文件。这里的告警是基于grafana上搭建的。我们启动PrometheusAlert。写完之后进行重启Prometheus。prometheus 的告警规则。测试 基于我们生产环境做的文档。然后在grafana上导模板。上导入模板就可以 直接引用。访问 grafana页面。重启一下grafana。 阅读详情

一天,心血來潮的想把Struts Validator驗證改成後端來做 原來的code 修改後的code 其實我只是把 DynaActionForm 換成 DynaValidatorForm 再來修改action 將 validate 改成true 好了server 重起!! 結果跳出

?[RequestUtils] Error creating form bean of class org.apache.struts.action.DynaValidatorForm java.lang.NullPointerException at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:214) at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:294) at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:193)

弄了老半天,struts config 改來改去 還是不行!!! 找出 [RequestUtils] 的DOC來看,也是看不出個所以然!! 好吧!!只找繼續往下找,把FormBeanConfig.java 214 行翻出來看!!

211 if (getDynamic()) {
212 obj = getDynaActionFormClass().newInstance();
213 } else {
214 obj = formBeanClass().newInstance();
215 }

耶~~NullPointerException 該不會是說formBeanClass() 這個東東吧!!

繼續追下去!! 看看到底是誰 弄了個NULL回來!!

protected Class formBeanClass() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); if (classLoader == null) {
classLoader = this.getClass().getClassLoader();
} try {
return (classLoader.loadClass(getType()));
}catch (Exception e) {

return (null); <========這裡非常的可疑!!!
}
}

就給它用e.printStackTrace(); 印出來好了!! 結果出現了 java.lang.ClassNotFoundException: org.apache.struts.action.DynaValidatorForm 原來是 org.apache.struts.action.DynaValidatorForm 這傢伙找不到,怎 會!!!趕快把!!DOC 打開來看看!!靠!!果然沒有~~
最後終於在 org.apache.struts.validator 這裡面找到了~~將form-bean 的type 改成 org.apache.struts.validator.DynaValidatorForm一切就正常了!!

這個故事告訴我們,看書照抄時,眼睛一定要睜大點,不然就得提升自己Debug的能力~~另外Struts也真是的,如果一開始就 扔個ClassNotFoundException回來~不就好了嗎??真是夠了!! 

手把手教你学pcie--(PCIe) 写请求的流程 通过上述流程,我们可以看到PCIe写请求的完整过程,包括请求的构建、发送、接收、处理和响应。这种请求-响应模型确保了数据传输的可靠性和有序性。 阅读详情

相关推荐

OpenV2X 车路协同开源平台 Columbia 版本正式发布!

OpenV2X车路协同开源平台Columbia 版本正式发布!

weixin_65571684的博客 1199

Exception creating bean of class org.apache.struts.validator.DynaValidatorForm: {1}

i encountered a strange exception, the track likes below:====================================================== javax.servlet.jsp.JspException: Exception creating bean of classorg.apache.strut

^_^-Beluga, ^_^-Stefli 3124

华为昇腾NPU环境搭建:torch-npu安装避坑指南(附常见错误解决方案)

本文详细解析了在华为昇腾NPU环境中安装torch-npu适配包的全流程与核心要点。从基础环境准备、严格的版本匹配策略,到针对‘RuntimeError: NPU error’、‘ImportError: libxxx.so’等高频错误的深度解析与解决方案,提供了一份实用的避坑指南,旨在帮助开发者高效搭建稳定的PyTorch开发环境。

weixin_29094979的博客 412

Struts使用Validator

Struts使用ValidatorValidator框架是一种可插拔的系统,validator-rules.xml文件用于以声明的方式插入执行验证时validator将要使用的验证例程。 启用Validator插件struts-config.xml文件里加入   plug-in className="org.apache.struts.validator.ValidatorPlugIn">   

tyrone的专栏 3708

【成功安装】Ubuntu22.04极简方式安装Nvidia驱动

今天下午安装了实机的Ubuntu,面临在Linux上安装Nvidia的问题,被这个问题困扰了一整个下午,各种报错整的我头大。后来发现了不需要按照传统的方式去Nvidia官网下载,再命令行安装,直接在线安装即可。

清筱明的博客 5346

海康Camera MVS Linux SDK二次开发封装ROS packge过程记录(c++)

https://www.hikrobotics.com/machinevision/service/download?module=0

weixin_41965898的博客 2万+

在struts中使用validator做页面验证

1. 在struts-config.xml文件中加入validator插件,加入这个插件后你的应用就具别的使用validator的环境,但是,要想真正的使用它还需要其他的配置。如:2. 在struts-config.xml文件中添加ApplicationResources配置文件。如:添加此文件的作用是提供错误信息的非编程定制化和多语言支持。如果我们使用中文平台操作系统,则默认情况下将首先查找Ap

eric88的专栏 1186

大数据领域数据架构的工业互联网数据架构设计

工业互联网作为第四次工业革命的重要驱动力,正在深刻改变传统制造业的生产方式和商业模式。本文旨在探讨工业互联网环境下的大数据架构设计,重点解决工业数据采集、传输、存储、处理和分析等关键环节的技术挑战。工业互联网数据架构的核心组件大数据技术在工业场景下的应用数据治理和质量控制边缘计算与云计算的协同架构背景介绍:建立基本概念和问题域核心架构:详细解析工业互联网数据架构技术实现:通过代码和数学模型展示关键技术实践案例:展示真实场景应用工具资源:推荐实用开发工具和学习资源。

软件工程实践的博客 856

使Struts支持Validator

要在Struts项目中使用Validator功能,首先需要配置Struts项目,使其支持Validator框架.Struts通过一个插件(Plugin)来使Struts项目支持Validator.这个Plugin由Struts默认提供,用户也可以自己开发自己的Validator Plugin.Struts默认提供的Plugin为:org.apache.struts.validator.Valida

吾欲乘风 2567

RK3588 平台imx334 驱动调试记录

rk3588调试imx334

xiaoning132的专栏 1791

OpenCV-Python实战(10)——详解 OpenCV 轮廓检测

在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。在本文中,将首次通过简单示例了解轮廓的基本概念,然后通过实际示例来了解如何检测和压缩轮廓,最后利用介绍如何利用图像矩描述检测到的轮廓属性。

盼小辉丶的博客 3万+

struts中使用validator

 刚开始用validator,需要注意较多的细节,再稍微明白些后,建议看看struts-example。为了抛砖引玉,写个例子:一。在struts-config.xml中加入:     value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> 在插件的配置中是通过pathnames属性来指定Validator的配

nalis的专栏 1119

基于C++和Basler SDK的相机开发详解

Basler相机是德国Basler公司生产的高性能工业相机,具有高分辨率、高帧率和低噪声的特点。Basler相机广泛应用于机器视觉、工业自动化、医疗影像和安防监控等领域。高分辨率和高帧率:能够捕捉清晰、细腻的图像。多种接口:支持USB、GigE、Camera Link等多种接口,方便不同应用场景的需求。丰富的配置选项:支持多种图像格式、分辨率和帧率的配置,适应不同的应用需求。本文详细介绍了如何基于C++和Basler SDK进行相机开发,涵盖了从环境搭建、相机连接、图像采集到图像处理的完整过程。

qq_38334677的博客 2100

Struts的validator框架验证

        经过为期近两个月的项目练习,了解了开发一个实际项目它的具体流程及在每一个阶段都做哪些工作。在技术上进一步一步熟悉了Struts框架中的相关内容。在这里我想谈一下有关Validator框架验证和Struts标签的相关内容。1.        Validator验证框架Validator框架验证已经克服在ActionForm Bean的validate()方法中写验规则

技术交流 991

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

在Struts中使用Validator验证框架详解

 Validatro框架以成为Jakarta的公共项目的一部分,可以从http://jakarta.apache.org/commons/下载单独的Validator框架,在Struts中已经呆了这个框架。 Validator主要依赖两个jar包 Jakarta-oro.jar:-提供一组处理文本的类,具有文本替换、过滤、和分割功能。 Commons-validator.jar:提

logicbiz的专栏 816

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

在struts中使用Validator框架

 在struts中使用Validator框架 Validator验证框架Validatro框架以成为Jakarta的公共项目的一部分,可以从http://jakarta.apache.org/commons/下载单独的Validator框架,在Struts中已经呆了这个框架。Validator主要依赖两个jar包Jakarta-or

Materials gathered 478

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Struts Validator验证框架

validator验证框架Validator框架能够克服在ActionForm Bean中以编程方式进行数据验证的局限,它允许Struts应用灵活的配置验证规则,无需编程。Validator框架主要依赖两个JAR文件:jakarta-oro.jar和commons-validator,.jarValidator框架采用两个基于XML的配置文件来配置验证规则。这两个文件为validator-rule

Tom Studio (汤姆工作室) 914

struts中validator的使用

  关于在struts中使用validator,经过半天实践,有了些许体会(以struts1.2.7为例子)。  步骤如下:  (1)下载struts-1.2.7.zip,解压后,将webapps中的struts-examples.war解开,在WEB-INF文件夹中找到validator-rules.xml,还有WEB-INF/validator中的validation.xml。  (2

Materials gathered 499

[Share]深度Struts之Validator

 在Struts中,Validator的作用非常大,他可以让用户从繁琐的页面验证工作中脱身,让页面验证工作放到配置文件里去做,Struts已经内置了如下这些我们经常使用的校验器:· validateByte  检查值能够安全地转换为byte· validateCreditCard  检查值是一个有效的信用卡号码· validateDate 检查值是一个有效的日期· validateDouble检查

1737

struts中validator框架学习笔记

1.将ActionForm改为ValidatorForm,若是DynaActionForm,则将struts配置文件中的form对象改为DynaActionForm,因为要使用Validator进行验证,只能是ValidatorForm或DynaValidatorForm两种。2.将org.apache.struts.validator下的validator-rules.xml里的内容考过来,

VSlogin学习笔记 705

使用 Struts Validator

本教程将指导您安装和配置 Struts Validator 组件。我将介绍如何使用 Validator —— 至少在一个简单的级别上使用 —— 并确保它能在具体的 Struts 配置中工作。而且,如果以前没有用过 Struts(但是却有足够的勇气跟随本教程),那么可以回顾 附录,里面提供了 Struts 安装的速成课程。完成本教程后,就设置并运行了 Validator,应当能够自如地把 Val

Bob@优快云 1551

Struts的验证--Validator

<span id="articlecontent" class="wenzhang_con" style="width: 780px;" onmouseup="function onmouseup(){NewHighlight(event)}">使用Validator包括如下三步:1、启用Validator插件;2、生成Form Bean类;3、修改配置文件。下面将详细说明如何配置和使

阳光下的立人 628

Struts Validator 开发指南

使Struts支持Validator 要在Struts项目中使用Validator功能,首先需要配置Struts项目,使其支持Validator框架.Struts通过一个插件(Plugin)来使Struts项目支持Validator.这个Plugin由Struts默认提供,用户也可以自己开发自己的Validator Plugin.Struts默认提供的Plugin为:org.apach

580

struts2 validator验证一些注意事项

struts2 validator验证一些注意事项2007-12-20 11:13:57.0 作者:justin 来源:本站[收藏此文章]struts2可以像struts1一样,在Action中使用validator()方法进行验证,也可以使用校验规则文件进行验证.本文主要介绍的是使用校验规则文件方式进行的验证.1.件命名方式:ActionClassName-ActionAliasName-v

鹏飞的专栏 1447

在Struts中使用Validator框架

在Struts中使用Validator框架      每个应用程序都有责任确保它们插入到后台资料库的数据是合法有效的,毕竟,如果这些应用程序所依赖的数据一旦遭到了破坏,那将是灾难性的,那应用程序还能拿什么来使自己正常运转呢?比如说,使用正规关系数据库的一个应用程序,数据库中的每个字段都有自己一定的规则和约束,来保证存储在其中的数据在一定程度上的正确性。任何要使用后台资料库数据的应用程序都有责任保护

sumongh我们在一起 738

Struts:validator验证框架详解(一)

Struts:Validator验证框架详解     我使用的是eclipse3.2和myeclipse5.5,服务器为Tomcat5.5,struts版本使用的是1.1。不废话。下面我们进入正题。 一、首先,演示一个最简单的Validator使用实例。(我这里只写出了重要代码和有变动的地方) 先看一下我的jsp文件login.jsp:name : pass

jianghe727的专栏 1279
上一篇: RedHat Linux AS3.0 配置 Resin3.0.14
下一篇: Resin 3.x 经验总结
eyejava
博客等级 码龄20年 11粉丝 44原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值