JSP(JavaServer Pages)是一种在服务器上运行的基于Java的视图技术,它允许您在(客户端语言,如HTML,CSS,JavaScript等)中编写模板文本,并与后端Java代码进行交互。
为什么“必填”字段验证器不能处理 Struts 2 中的空白值?
我正在构建一个登录应用程序(在 Netbeans 731 中),它基本上确保用户名和密码的非空值。应用程序运行良好,但验证不起作用,所以即使我...
将displaytag列设置为单选按钮,value属性不会评估Struts 2中的EL表达式
我在获取与单选按钮(表中的一列)关联的值时遇到问题。它没有返回实际的conferenceid,而是返回${conf.conferenceid...
我有一种情况需要将下拉值设置为只读。 但由于 仅具有禁用属性,如何使 表现为只读? 我有
我有一个 URL=“deliverable.do?id=123” 单击提交按钮后,它会转到 validate() 方法并找到一些缺失的字段。 然后,当它返回显示问题时(这是......
我有一个注册程序。当我在数据库中插入一条记录时,我将实例化一个类并调用方法 insert()。当我插入相同的记录时,当然会出现重复数据错误...
如何在 Struts 2 中将 <s:select> 标签与两个相同类型的列表一起使用?
我正在使用Struts 2,因为我有要求, 我必须填充两个相同类型的不同列表作为下拉框 在 Struts 2 中可以吗? 演示代码如下: 我使用 Struts 2 因为我有要求, 我必须填充两个相同类型的不同列表作为下拉框 在 Struts 2 中可以吗? 演示代码如下: <s:select list="{list1 , list2}" value="" /> 列表包含相同类型的 VO,但数据不同。 首先:你最好在操作类中而不是在 JSP 中做这种事情。 在 JSP 中您可以使用 <s:append> 标签。 <s:append var="appendedLists"> <s:param value="list1" /> <s:param value="list2" /> </s:append> <s:select list="#appendedLists" value="" /> 使用 OGNL 序列运算符逗号 (,)。该运算符允许计算 OGNL 表达式序列。例如 <s:set var="list1" value="{1,2}"/> <s:set var="list2" value="{3,4}"/> <s:select list="%{#list1.addAll(#list2), #list1}" /> 通过计算第一个表达式来添加第二个列表中的所有元素,然后从第二个表达式中返回此列表作为结果。
为什么 Tuckey URL 重写在 Struts 2 中不起作用? [重复]
我已配置 Tuckey URL 重写。 我已在 pom.xml 中包含依赖项: org.tuckey url重写文件...
使用 HTML <form> 标签代替 Struts 2 <s:form> 标签是否有效?
我想用 我想用 <form action="someClass"> <s:textarea name="name" label="Name"/> <s:checkboxlist list="{'Male','Female'}" name="gender" label="Gender"/> </form> 而不是 <s:form action="someClass"> <s:textarea name="name" label="Name"/> <s:checkboxlist list="{'Male','Female'}" name="gender" label="Gender"/> </s:form> 因为 <s:form> 标签的默认主题 "xhtml" 与我的 CSS 和主题不兼容 "simple" 如果不使用 <s:fielderror> 标签,它本身无法显示验证错误。 那么使用它有效吗? 到现在为止我都这样使用。我以后这样使用会遇到什么错误吗? 当然您可以使用纯 HTML 标签。 请记住,所有 JSP 自定义标签最终都是渲染 HTML。[1] 正如 Roman 所说,您将失去自动填充值、通过属性名称或键检索标签、错误消息和样式显示等功能。 您最好的做法可能是创建自己的主题并使用自己的模板和 CSS,或者使用 "css_xhtml" 主题并提供您自己的样式。哪个更好取决于我们没有的大量信息,但是 CSS HTML 版本相当灵活,除了必须将 <br/> 标签定义为内联,因为它当前在主题中应该使用的地方不是。 [1] 是的,在通过 HTML 发送之前,它可以在服务器端执行其他操作,例如 SQL 自定义标记。不过,一般来说,自定义标签的目的是发出 HTML。 您可以使用 <form> 标签来处理表单,但它不是 <s:form 标签,您必须手动维护它的属性。 <s:form 使用与框架精确通信的良好属性预设来渲染 <form> 标签。忽略它会缺少框架提供的一些功能,从而导致不正确的用法和错误。
如何在JSP中使用`if`条件并运行JavaScript函数?
我试图在JavaScript函数内的JSP条件下使用if,该函数在JSP站点中启动onload事件,但我显然做错了。我正在尝试检查 URL 参数,但仅ac...
我有多个 JSP,每个 JSP 都包含一个或多个表。 片段1.jsp: ... 我有多个 JSP,每个 JSP 都包含一个或多个表。 fragment1.jsp: <table class="foo"> <tr> <td>stuff</td> <td>stuff2</td> </tr> </table> fragment2.jsp: <table class="foo"> <tr> <td>more stuff</td> <td>more stuff2</td> </tr> </table> <table class="bar"> <tr> <td>whatever</td> </tr> </table> 它们由不同配置的包装器使用: wrapper1.jsp: <s:include value="fragment1.jsp" /> <s:include value="fragment2.jsp" /> wrapper2.jsp: <s:include value="fragment2.jsp" /> 如果fragment2.jsp出现在fragment1.jsp之后,我希望这两个表格之间没有边距并显示为一张表格。但是,如果其中任何一个是单独的,我希望它们的格式正常,就像 "foo" 表格的样式一样。 有没有办法以某种方式指示此样式首选项,以便两个"foo"表格在相邻时显示为单个表格,但在其他情况下正常样式? 我对 Struts/JSP 有点陌生,正在处理一些混乱的遗留代码,所以请帮助我了解是否可以通过其他方法更好地解决这个问题。 实际上仅使用 CSS 即可实现,无需 JavaScript 且无需更改 HTML。 一个全屏演示抵得上一千字... 基本上,您需要使用 border-collapse: collapse; 并指定以下设置: 当表格单独存在时,所有边框和边距通常设置: table { border-collapse : collapse; border : 4px solid black; margin-top : 20px; margin-bottom : 20px; } 当桌子与一张或多张其他桌子相邻时: 如果不是第一个,删除margin-top和border-top: table + table { margin-top : 0; border-top : none; } 如果不是最后一个:删除margin-bottom和border-bottom: table:not(:last-child) { border-bottom : none; margin-bottom : 0; } 还要确保避免在每个表格的最后一个 <tr> 上设置边框: tr:not(:last-child) { border: 1px solid silver; } 最好使用 javascript 和 jquery 来完成此类工作。所以我认为这会有所帮助: $(document).ready(function(){ var secondTable = $(".bar").html(); $(".foo").append(secondTable); }); 注意,如果您还没有包含 jquery 库,则需要包含它。 如果不使用表格数据,则无需使用表格。您始终可以使用 div 或 span 标签。 <div class="foo"> <span>more stuff</span> <span>more stuff2</span> </div> <div class="bar"> <span>whatever</span> </div> CSS 选择器 table.foo + table.foo 将选择 table.foo 中出现在另一个相同类型元素之后的每个元素。 您可以使用它来删除以下 table.foo 元素之后的 all 的边距: table.foo + table.foo { margin-top: 0px; margin-bottom: 0px; } 如果它仅适用于 second 元素,请使用 table.foo:nth-child(2) 代替。 东西 东西2
我尝试从这里复制JSP文件上传的教程。我正在使用 Eclipse 和 Tomcat,但是当我在服务器上运行它时,出现错误: jsp文件中第24行发生错误:/inde...
没有映射与上下文路径 [] 关联的名称空间 [] 和操作名称 [] 的操作
我是 Struts 2 的新手,我一直在关注 Struts 2 (Koushik) 的视频教程。我已经创建了 Struts.xml、操作类和 JSP,与教程中创建的相同。但它给出了
如何删除警告:Struts 2 标签中未定义的属性名称 []?
目前我们正在将 Struts 1 应用程序迁移到 Struts 2。将 JSP 标签更改为 Struts 2 时,我们在 Struts 1 中为 标签添加了属性 自动完成=\"关闭" ...
无法从 Struts 2 标签内部访问 scriptlet 变量
我正在尝试访问 JSP 中 Struts 2 标记内的 scriptlet 变量: <% Website website = (Website)request.getAttribute(Website.NAME); out.println(website.isUkSite()); // pr...
升级到struts 2.3.15.1不会在action类上设置HashMap值
我将 Struts 从 2.1.6 升级到 2.3.15.1,因为最新版本中提供了安全修复程序。但是,现在表单字段值不会发布到 Action 类。 基本上,我填充...
我对 Struts 2 上的操作有疑问。 假设我有一个带有“保存”操作的表单。 我已在 struts.xml 上将该操作映射到某种方法,如下所示: 我对 Struts 2 上的操作有疑问。 假设我有一个包含操作 "save" 的表单。 我已将该操作映射到某种方法,如下所示:struts.xml 在我的 <action name="save" class="actions.agenda" method="save"> <result name="success">/agenda/success.jsp</result> </action> 类中,我使用 Action 方法加载表单中的一些参数,因此我创建了保存新条目的方法:execute 问题是我遇到了这个错误: public String save(){ ///Logic here dao.create(entry) return SUCCESS; } 有人可以给我关于这个问题的线索吗? web.xml SEVERE: Could not find action or result 我的操作 (<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>springOpenEntityManagerInViewFilter</filter-name> <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class> <init-param> <param-name>entityManagerFactoryBeanName</param-name> <param-value>entityManagerFactory</param-value> </init-param> </filter> <filter-mapping> <filter-name>springOpenEntityManagerInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> ..... </web-app> ) 位于一个单独的 xml 上,称为 save,它包含在 Actions.xml 中。堆栈跟踪 struts.xml 其他动作效果很好。 您实际收到的投诉是Stacktraces No result defined for action actions.agenda and result input com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:376) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:432) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) com.sun.grizzly.ContextTask.run(ContextTask.java:71) com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) java.lang.Thread.run(Thread.java:722) 。 基本上,这意味着某些原因导致 Struts 认为您向其中一个属性提供了无效数据(或者验证方法添加了字段/操作错误)。 例如也许您有一个设置器,它接受一个整数,并将一个非整数值传递给它,类似的东西。 因为它无法将提供的值转换为适合 setter 的值,所以它会抱怨。 这会导致操作返回“INPUT”值,而您没有为其定义结果。 通常,这里要做的是返回保存“输入”结果之前呈现的相同表单,因为正常的 Struts 2 标签(如 No result defined for action actions.agenda and result input 或 <s:textfield>)将在相应字段上方显示字段错误。 如果您提交表单,您应该提供 <s:select> 类型的结果。所以 input
我对 Struts 2 上的操作有疑问。 假设我有一个带有“保存”操作的表单。 我已在 struts.xml 上将该操作映射到某种方法,如下所示: 我对 Struts 2 上的操作有疑问。 假设我有一个包含操作 "save" 的表单。 我已将该操作映射到某种方法,如下所示:struts.xml 在我的 Action 类上,我使用 <action name="save" class="actions.agenda" method="save"> <result name="success">/agenda/success.jsp</result> </action> 方法加载表单中的一些参数,因此我创建了保存新条目的方法:execute 问题是我遇到了这个错误: 严重:找不到操作或结果 有人可以给我关于这个问题的线索吗? web.xml public String save(){ ///Logic here dao.create(entry) return SUCCESS; } 我的操作 (<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>springOpenEntityManagerInViewFilter</filter-name> <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class> <init-param> <param-name>entityManagerFactoryBeanName</param-name> <param-value>entityManagerFactory</param-value> </init-param> </filter> <filter-mapping> <filter-name>springOpenEntityManagerInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> ..... </web-app> ) 位于一个单独的 xml 上,称为 save,它包含在 Actions.xml 中。堆栈跟踪 struts.xml 其他操作效果很好。 您实际收到的投诉是Stacktraces No result defined for action actions.agenda and result input com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:376) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:432) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) com.sun.grizzly.ContextTask.run(ContextTask.java:71) com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) java.lang.Thread.run(Thread.java:722) 。 基本上,这意味着某些原因导致 Struts 认为您向其中一个属性提供了无效数据(或者验证方法添加了字段/操作错误)。 例如也许您有一个设置器,它接受一个整数,并将一个非整数值传递给它,类似的东西。 因为它无法将提供的值转换为适合 setter 的值,所以它会抱怨。 这会导致操作返回“INPUT”值,而您没有为其定义结果。 通常,这里要做的是返回保存“输入”结果之前呈现的相同表单,因为正常的 Struts 2 标签(如 No result defined for action actions.agenda and result input 或 <s:textfield>)将在相应字段上方显示字段错误。 如果您提交表单,您应该提供 <s:select> 类型的结果。所以 input
从这个线程中,我被建议使用嵌套表,该表反过来执行预期的操作/功能。 <... 从此线程,建议我使用嵌套表,该表又执行预期的操作/功能。 <table> <thead class="center"> <tr> <th><a href="viewfaculty?columnName=professor_id">ID</a></th> <th><a href="viewfaculty?columnName=professor_last_name">L. Name</a></th> <th>F. Name</th> <th>M. Name</th> <th>Sex</th> <th><a href="viewfaculty?columnName=professor_employment_status">Empl. Status</a></th> <th><a href="viewfaculty?columnName=professor_department">Dept.</a></th> <th>Modify</th> </tr> </thead> <tbody> <c:forEach var="professor" items="${facultyList}"> <tr> <td> <form action="savechanges" method="post"> <table> <tr> <td align="center">${professor.profId}</td> <td>${professor.profLastName}</td> <td>${professor.profFirstName}</td> <td>${professor.profMiddleName}</td> <td align="center">${professor.profSex}</td> <td align="center">${professor.profEmplStatus}</td> <td align="center">${professor.profDept}</td> <td align="center"> <c:choose> <c:when test="${professor.profEmplStatus.equals('FULL')}"> <select name="profEmplStatus" required> <option value="FULL" selected>FULL</option> <option value="PART">PART</option> <option value="RET">RET</option> <option value="TRMTD">TRMTD</option> </select> </c:when> <c:when test="${professor.profEmplStatus.equals('PART')}"> <select name="profEmplStatus" required> <option value="FULL">FULL</option> <option value="PART" selected>PART</option> <option value="RET">RET</option> <option value="TRMTD">TRMTD</option> </select> </c:when> <!-- more <c:when> --> </c:choose> </td> <td align="center"> <c:choose> <c:when test="${professor.profDept.equals('BSCS-SE')}"> <select name="profDept" required> <option value="BA-MMA">BA-MMA</option> <option value="BFDT">BFDT</option> <option value="BS-AN">BS-AN</option> <option value="BS-GPD">BS-GPD</option> <option value="BSBA-FM">BSBA-FM</option> <option value="BSBA-MKT">BSBA-MKT</option> <option value="BSCS-SE" selected>BSCS-SE</option> <option value="BSIT-WD">BSIT-WD</option> <option value="GENED">GENED</option> </select> </c:when> <c:when test="${professor.profDept.equals('GENED')}"> <select name="profDept" required> <option value="BA-MMA">BA-MMA</option> <option value="BFDT">BFDT</option> <option value="BS-AN">BS-AN</option> <option value="BS-GPD">BS-GPD</option> <option value="BSBA-FM">BSBA-FM</option> <option value="BSBA-MKT">BSBA-MKT</option> <option value="BSCS-SE">BSCS-SE</option> <option value="BSIT-WD">BSIT-WD</option> <option value="GENED" selected>GENED</option> </select> </c:when> <!-- more <c:when> --> </c:choose> </td> <td class="center"> <input type="hidden" name="profId" value="${professor.profId}" /> <input type="submit" value="Save" /> </td> </tr> </table> </form> </td> </tr> </c:forEach> </tbody> </table> 表格看起来很混乱,如以下屏幕截图所示: 如何做到这一点才能达到最初的预期? html 设计有嵌套表格,其中在外部表格的单元格内包含 form 标签。从浏览器中输出的图片中,您可以看到嵌套表占用了属于第一列的空间。但您需要两个表具有相同的列数。计算嵌套表中的列数,并使用 colspan 标签的 <td> 属性来展开一个单元格以占用专用于外部表其他列的空间。 <td colspan="10" align="right" valign="top"> <form action="savechanges" method="post"> <table style="width:100%;" cellspacing="0" cellpadding="0" border="0">
我正在使用 JSTL 在我的 JSP 中迭代 Spring 的模型值。 我使用 JSTL 在 JSP 中显示这两个日期。 下面是我的Java代码: model.put("最旧的",timesheetService.getOldestPendingTimesh...