我在某处读过
开发人员可以通过创建可以与控制器集成的 Action 对象来访问 struts 控制器,而 Java Server Faces 技术不允许访问控制器。
谁能为我详细说明一下,这是什么意思?任何示例都会有很大帮助。
还
Struts 控制器可以根据用户角色对每个 Action 进行访问控制等操作。JSF 不提供此功能。
在这一点上我也很困惑。请用一个例子为我解释一下。
我在某处读过
开发人员可以通过创建可以与控制器集成的 Action 对象来访问 struts 控制器,而 Java Server Faces 技术不允许访问控制器。
谁能为我详细说明一下,这是什么意思?任何示例都会有很大帮助。
还
Struts 控制器可以根据用户角色对每个 Action 进行访问控制等操作。JSF 不提供此功能。
在这一点上我也很困惑。请用一个例子为我解释一下。
我举个例子。假设您有一个格式如下的 jsp 文件:
<form name="myform" id="myform" action="<%=formAction%>" method="post">
</form>
其中包含一些输入。在您的 jsp 顶部,您可以定义您的操作,例如:
<portlet:actionURL var="formAction">
<portlet:param name="action" value="submitForm"/>
</portlet:actionURL>
因此,当您单击该表单的提交按钮时,控制器的 processAction 方法会执行您为其操作定义的操作,例如:
String action = request.getParameter("action");
if ("submitForm".equals(action)) {
//do something
}
问候 !
当您为 Struts 2 编码时(也适用于 Struts),您正在扩展控制器本身的框架。Action 是您使用自己的操作扩展的基类,允许您扩展控制器逻辑,通常通过对业务逻辑进行一些调用,然后重定向到您的结果视图之一(在s2 ) 基于该逻辑的结果。当然,您可以对动作进行访问控制等操作;但是你可以对一个动作做任何事情。我猜这个引用片段只是指出 Struts 2 的概念粒度与 Action(控制器)的每个请求实例同步。
至于 JSF,它是一种完全不同类型的框架。它不像 Struts 2 那样面向“请求”,而是“面向组件”。这意味着 JSF 的概念粒度是页面上的组件小部件的概念。这在某种程度上处于不同的级别,或者可能与 struts 2 处理单个请求的方式完全不同。所以,在 JSF 中,框架更深地隐藏了控制器逻辑,主要是因为它更复杂。控制器逻辑必须从请求中获取传入数据,并确保将其映射并传递到与请求关联的页面上的适当组件小部件。开发者 api 都是关于组件合约的。