JSP(JavaServer Pages)是一种在服务器上运行的基于Java的视图技术,它允许您在(客户端语言,如HTML,CSS,JavaScript等)中编写模板文本,并与后端Java代码进行交互。
我想删除登录页面中的cookie,无论我做什么,它都不会消失。 在 Chrome 开发人员中,它显示来自服务器的响应,其中不包含 cookie,即使我已经添加了它
删除转发到 Struts 2 中操作的 <jsp:forward> 标签
我正在将一个Struts应用程序迁移到Struts 2。它是四年前由Struts 1.2开发的。 我的问题是: 在我的JSP中,有这么一句话: 它...
在 Struts 2 的 JSP 页面上使用 OGNL 根据条件将 bean 分配给对象
在Struts 2 / OGNL页面中,是否可以根据条件将任何类型的bean分配给对象? 例如, 在Struts 2 / OGNL页面中,是否可以根据条件将任何类型的bean分配给对象? 举个例子, <s:if test"%{customer != null}"> <s:set var="someobject" value="customer"> </s:if> <s:else> <s:set var="someobject" value="user"> </s:else> 是的,可以。但你确定你应该这样做吗? 这似乎是业务,而不是表示,因此为什么在视图中而不是在控制器中? 而不是 <s:if test"%{customer != null}"> <s:set var="someobject" value="customer"> </s:if> <s:else> <s:set var="someobject" value="user"> </s:else> SomeObject is of type : <s:property value="%{#someobject.class.name}" /> 你可以在你的行动中使用 public String getSomeobject(){ return (customer!=null) ? customer : user; } 并且仅在 JSP 中 SomeObject is of type : <s:property value="%{someobject.class.name}" /> 当您的操作对对象一无所知时,您的用例更合适,但随后您将在视图中放入大量业务逻辑... <s:set>标签将变量存储在作为映射的值堆栈上下文中。因此任何对象都可以设置在 var 属性中指定的键下。如果您在带有 <s:set> 标签的页面上频繁使用相同的键,那么它将覆盖之前设置的值。例如 <s:set var="someobject" value="customer"> <s:set var="someobject" value="user"> 之后,如果您使用 user 引用,则只能检索 someobject 对象。 关于参考资料,您可以阅读OGNL文档。 该框架使用标准命名上下文来评估 OGNL 表达式。处理 OGNL 的顶级对象是 Map (通常 称为上下文映射或上下文)。 OGNL 有一个概念 是上下文中的根(或默认)对象。在表达上, 无需任何属性即可引用根对象的属性 特殊的“标记”概念。对其他对象的引用标有 英镑符号 (#)。 使用上面的示例,您可以使用对 someobject 的引用来获取 user 属性 name。 Hello, <s:property value="#someobject.name"/>
<html:checkbox> 和 <s:checkbox> 的行为不同
我正在将复选框从 Struts 1 迁移到 Struts 2, 所以我改变了Struts 1的代码 到 &...
如何将选定的对象从 JSP 传递到 Struts 2 中的 Action 类?
我能够在JSP页面上打印对象列表displayList。每一行都是一个 User 对象。我在每行末尾都有一个链接,用于编辑和删除同一对象。 我能够在 JSP 页面上打印对象列表 displayList。每行都是一个对象User。我在每行末尾都有一个链接,用于 EDIT 和 DELETE 同一对象。 <s:iterator value="displayList" var="eachUser" > <tr> <td> <s:property value="#eachUser.EmailId"/> </td> <td> <s:property value="#eachUser.PasswordKey"/> </td> <td> <a href="PresentRegisterScreen"> Edit </a> </td> <td> <a href="DeleteUser"> Delete </a> </td> </tr> </s:iterator> 屏幕上的输出如下所示: 所有记录: All Registered Users - Admin View Email Id Password Edit Delete Paul tata Edit Delete Samy tata1$ Edit Delete DaLin tiger1$ Edit Delete Joshua lion1$ Edit Delete 如何将选定的对象传递给Action类?或者,如果用户单击 EDIT 的 Paul 链接,如何获取我的操作类中的对象? 当有人单击“编辑”(或)“删除”时,我如何知道用户选择了哪一行,以便我可以在下一个操作类/屏幕中获取该特定对象/行值进行编辑/删除。 很简单,您只需修改链接以包含带有对象 ID 的参数,例如 emailId。 <td> <s:a action="PresentRegisterScreen"><s:param name="emailId" value="%{emailId}"/> Edit </s:a> </td> <td> <s:a action="DeleteUser"><s:param name="emailId" value="%{emailId}"/> Delete </s:a> </td> 您还创建了一个带有操作 bean 的 getter 和 setter 的属性 emailId。 现在,如果您单击链接,将调用该操作并将参数设置为该操作。您获取属性的值并使用 emailId 找到您想要“编辑(或)删除”的对象。
如何在 Struts 2 中使用 <s:text> 在错误消息中使用参数?
当我尝试在文本中放入一些动态部分以供 Struts 2 中的 标记使用时,这些部分将被我定义的参数替换。 这是我在文件中写句子的方式。
如何使用Struts2 jQuery插件<sj:submit>按钮?
我有 Struts 2 jQuery 插件 按钮,当我单击该按钮时,它不会像 Struts 按钮那样触发操作类。我需要在点击后保留相同的页面...
以前缀“logic”导入的标签库中没有定义标签“iterator”
错误:javax.servlet.ServletException:org.apache.jasper.JasperException:/ArrayList.jsp(9,2)在使用前缀“logic”导入的标签库中没有定义标签“iterator” org.apache.
如何在JSP中获取动作结果代码? 我想对所有结果使用相同的 JSP。 公共字符串 doSth() { 返回一个? “好的”:“失败”; }
我有一些关于包含标签的问题。 使用这样的结构是否正确: 我有一些关于包含标签的问题。 使用这样的结构是否正确: <c:choose> <c:when test="${info == 'view_users'}"> <jsp:include page="/WEB-INF/jsp/admin/view_users.jsp" /> </c:when> <c:when test="${info == 'view_products'}"> <jsp:include page="/WEB-INF/jsp/admin/view_products.jsp" /> </c:when> <c:when test="${info == 'edit_product'}"> <jsp:include page="/WEB-INF/jsp/admin/edit_product.jsp" /> </c:when> <c:when test="${info == 'view_categories'}"> <jsp:include page="/WEB-INF/jsp/admin/view_categories.jsp" /> </c:when> </c:choose> 有时,我会遇到异常JasperException: Unable to compile class for JSP。 如果我使用静态包含而不是动态包含,通过在 JSP 中使用 include 指令,我的问题是否会得到解决,或者我是否需要放弃这样的结构?所有包含的页面都有固定的结构,而不是动态的。 结构可以简化,但不能解决你的编译问题。 <c:import url="/WEB-INF/jsp/admin/${info}.jsp" /> 而是将此逻辑委托给控制器(使用 MVC)来决定应返回哪个视图并正确初始化视图。
如何在 Struts 2 中使用包含上下文属性和 <s:a> 标签?
根据文档,我可以使用 includeContext = "false" 来避免实际上下文应包含在 URL 中。 当我使用这条线时: 根据文档,我可以使用 includeContext = "false" 来避免实际上下文应包含在 URL 中。 当我使用这条线时: <s:a action="persist" namespace="books" includeParams="get" includeContext="false" cssClass="btn btn-xs btn-success"> <s:text name="actions.books.edit" /> <s:param name="idBook"><s:property value="id" /></s:param> </s:a> 生成的网址是这样的: http://localhost:8080/ejercicio4-web/books/books/persist.action?idBook=6 但是当前的网址: http://localhost:8080/ejercicio4-web/books/all.action 如果我使用 <s:url> 组件(如果它工作正常): http://localhost:8080/ejercicio4-web/books/persist.action?idBook=6 struts.xml完整配置: <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false"/> <constant name="struts.devMode" value="true"/> <!-- Use Guice as the ObjectFactory for this application --> <constant name="struts.objectFactory" value="guice" /> <constant name="struts.custom.i18n.resources" value="global" /> <constant name="struts.url.includeParams" value="get" /> <!-- Default App Package --> <package name="app-default" abstract="true" extends="struts-default, tiles-default"> <interceptors> <interceptor name="saveParamsOnSession" class="interceptors.SaveParamsOnSession"/> <interceptor-stack name="secure"> <interceptor-ref name="roles"> <param name="allowedRoles">ADMIN</param> </interceptor-ref> <interceptor-ref name="paramsPrepareParamsStack"/> </interceptor-stack> <interceptor-stack name="storeFlashDataStack"> <interceptor-ref name="store"> <param name="operationMode">STORE</param> </interceptor-ref> <interceptor-ref name="defaultStack" /> </interceptor-stack> <interceptor-stack name="storeParamsPrepareParamsStack"> <interceptor-ref name="store"> <param name="operationMode">STORE</param> </interceptor-ref> <interceptor-ref name="paramsPrepareParamsStack" /> <interceptor-ref name="saveParamsOnSession" /> </interceptor-stack> </interceptors> <global-results> <result name="ejbexception" type="tiles">app.error.ejbexception</result> </global-results> <global-exception-mappings> <exception-mapping exception="javax.ejb.EJBException" result="ejbexception" /> </global-exception-mappings> </package> <!-- Books package --> <package name="books" namespace="/books" extends="app-default"> <!--<default-interceptor-ref name="secure"/>--> <default-action-ref name="home" /> <action name="home" class="actions.BaseAction"> <result type="tiles">app.books.home</result> </action> <!-- persist book --> <action name="persist" class="actions.books.PersistBookAction"> <interceptor-ref name="store"> <param name="operationMode">RETRIEVE</param> </interceptor-ref> <interceptor-ref name="servletConfig" /> <interceptor-ref name="params" /> <interceptor-ref name="prepare" /> <result type="tiles">app.books.persist</result> </action> <action name="proccess" class="actions.books.PersistBookAction" method="proccess"> <interceptor-ref name="storeParamsPrepareParamsStack" /> <interceptor-ref name="fileUpload"> <param name="allowedTypes">application/pdf</param> </interceptor-ref> <exception-mapping exception="java.io.IOException" result="input" /> <result name="input" type="redirectAction">persist.action?idBook=${book.id}</result> <result type="redirectAction">persist.action?idBook=${book.id}</result> </action> <!-- Show Book --> <action name="show" class="actions.books.BookAction"> <interceptor-ref name="paramsPrepareParamsStack" /> <result type="tiles">app.books.show</result> </action> <action name="pdf" class="actions.books.ShowPDFAction"> <interceptor-ref name="basicStack" /> <result name="success" type="stream"> <param name="contentType">application/pdf</param> <param name="inputName">inputStream</param> <param name="contentDisposition">inline;filename="test.pdf"</param> <param name="bufferSize">1024</param> </result> </action> <!-- Remove book --> <action name="remove" class="actions.books.RemoveBookAction"> <interceptor-ref name="store"> <param name="operationMode">STORE</param> </interceptor-ref> <interceptor-ref name="paramsPrepareParamsStack" /> <result name="input" type="redirectAction">all</result> <result type="redirectAction">all</result> </action> <!-- Books list --> <action name="all" class="actions.books.BooksAction"> <interceptor-ref name="storeParamsPrepareParamsStack" /> <result type="tiles">app.books.all</result> </action> </package> <!-- Authors package --> <package name="authors" namespace="/authors" extends="app-default"> <action name="create" class="actions.authors.CreateAuthorAction"> <interceptor-ref name="storeFlashDataStack" /> <result name="input" type="redirectAction">books/persist</result> <result type="redirectAction"> <param name="actionName">persist</param> <param name="namespace">/books</param> </result> </action> </package> <!-- Accounts package --> <package name="accounts" namespace="/accounts" extends="app-default"> <action name="login" class="actions.accounts.SigninAction"> <interceptor-ref name="store"> <param name="operationMode">RETRIEVE</param> </interceptor-ref> <result>/WEB-INF/views/accounts/login.jsp</result> </action> <action name="check" class="actions.accounts.SigninAction" method="check"> <interceptor-ref name="store"> <param name="operationMode">STORE</param> </interceptor-ref> <result name="input" type="redirectAction">login</result> <result type="redirectAction">login</result> </action> <action name="signup" class="actions.accounts.PreCreateUserAction"> <interceptor-ref name="store"> <param name="operationMode">RETRIEVE</param> </interceptor-ref> <result type="tiles">app.accounts.signup</result> <result name="input" type="tiles">app.accounts.signup</result> </action> <action name="create" class="actions.accounts.PostCreateUserAction"> <interceptor-ref name="store"> <param name="operationMode">STORE</param> </interceptor-ref> <interceptor-ref name="fileUpload"> <param name="allowedTypes">image/jpeg,image/jpg,image/png</param> </interceptor-ref> <interceptor-ref name="defaultStack" /> <result name="input" type="redirectAction">signup</result> <result type="redirectAction">signup</result> </action> </package> </struts> 为什么使用 includeContext 属性?你应该删除它 <s:a action="persist" namespace="books" cssClass="btn btn-xs btn-success"> <s:text name="actions.books.edit" /> <s:param name="idBook"><s:property value="id" /></s:param> </s:a> 框架使用 UrlHelper 为所有标签生成 url,因此它们无法预测您如何使用生成的代码。 includeContext 是 Boolean 属性,表示 “URL 中是否应包含实际上下文” 描述 创建 HTML 的标签。该标签支持相同的属性 作为“url”标签,包括使用“param”标签的嵌套参数。 还有你为什么使用includeParams="get"? url 中只有一个参数。
如何动态改变图案?我有两个针对两个语言环境的模式。另外,我还有每个语言环境的属性文件,其中包含 date.format 键,其值是 MM/dd/Y...
如何在 Struts 2 和 Hibernate 中编辑表中的行?
我无法使用 Struts 2 和 Hibernate 编辑表格。在 Apache 控制台中,我可以看到更新查询已执行,但从表中它只是删除数据,并在尝试插入数据时,
使用 Struts 2 和 Hibernate 编辑行不起作用
我无法使用 Struts 2 和 Hibernate 编辑表格。在 Apache 控制台中,我可以看到更新查询已执行,但从表中它只是删除数据,并在尝试插入数据时,
如何在 Struts 2 中使用 <s:push> 标签作为表单输入字段?
我有两个类,一个是Action类MyAction,另一个是POJO类User。在 MyAction 中,我为 User 类制作了 getter-setter。 然后我有用于用户输入的index.jsp 页面。在此,我使用
我有两个类,一个是Action类MyAction,另一个是POJO类User。在 MyAction 中,我为 User 类制作了 getter-setter。 然后我有用于用户输入的index.jsp 页面。在此,我使用
为什么“必填”字段验证器无法处理 Struts 2 中的空白值?
我正在构建一个登录应用程序(在 Netbeans 731 中),它基本上确保用户名和密码的非空值。应用程序运行良好,但验证不起作用,所以即使我...
为什么“必填”字段验证器不能处理 Struts 2 中的空白值?
我正在构建一个登录应用程序(在 Netbeans 731 中),它基本上确保用户名和密码的非空值。应用程序运行良好,但验证不起作用,所以即使我...
将displaytag列设置为单选按钮,value属性不会评估Struts 2中的EL表达式
我在获取与单选按钮(表中的一列)关联的值时遇到问题。它没有返回实际的conferenceid,而是返回${conf.conferenceid...
我有一种情况需要将下拉值设置为只读。 但由于 仅具有禁用属性,如何使 表现为只读? 我有