gpt4 book ai didi

java - 使用 JSP 和 POJO 的被动 View 设计模式示例

转载 作者:搜寻专家 更新时间:2023-11-01 03:10:35 27 4
gpt4 key购买 nike

我试图了解被动 View 设计模式如何适用于简单的网络应用。

有人可以使用这些要求提供此模式的简单示例吗:

  1. View 是一个打印 HELLO WORLD 的 JSP!
  2. 数据作为“hello world”保存在数据存储中,检索数据的调用可以是 stub
  3. 为片段(演示者、 View 等)提供示例文件,并指出每个文件代表模式的哪一部分。
  4. 除 jSTL/el(可选)外,不应使用任何框架/DSL

谢谢

更新 1:添加我对它的结构的理解。

//演示者;负责特定 View 的多个“呈现”(显示、索引、编辑、摘要等)

public class HelloWorldPresenter {
private HttpServletRequest request;
private DataStore dateStore;

public HelloWorldPresenter(HttpServletRequest request) {
this.request = request;
this.dataStore = DataStoreUtil.getDataStore(request);
// Do a bunch of other inits that all getXXXModels() will use
}

public getShowModel() {
HelloWorldShowModel model = new HelloWorldShowModel();
String tmp = makeLoud(this.dataStore.getMyData()); // Stub method

model.setText(tmp);
return model;
}

private String makeLoud(String str) {
return str.toUpperCase() + "!";
}
}

// View 使用的模型

public class HelloWorldShowModel { 
private String text;
public getText() { return this.text };
public setText(String text) { this.text = text; }
}

// View 显示.jsp

<c:set var="model" value="new HelloWorldPresenter.getShowModel()"/>
${model.text} -> HELLO WORLD!

<% HelloWorldShowModel model = new HelloWorldPresenter(request).getShowModel() %>
<%= model.getText() %>

我不确定的是:

  1. Presenter 将如何暴露给 View (JSP),因为 View 不应该知道 Presenter。不过,我可能混合了语义,而 HelloWorldShowModel(充当某种“ViewModel”,不应该了解 Presenter)。

    1. 我什至应该拥有 HelloViewShowModel 抽象,还是应该在我的 Presenter 上简单地拥有一个方法 getText(),该方法在 JSP 中被调用以获取请求的文本。

    2. 如果我确实有一个资源的多个“ View ”(例如显示、索引、编辑、摘要等),我应该有多个演示者吗?这个逻辑应该怎么破?从共享演示者继承的多个演示者?每个演示者是否应该只负责返回一个 ViewModel?

我通读了 Fowlers 的文章以及许多其他文章 - 问题(对我来说)是它们是在 .NET 应用程序的上下文中编写的,我不明白它们的所有对象是如何连接起来的.

我希望这会消除我“懒惰”和寻找“分发”答案的担忧:)

最佳答案

根据您陈述的要求,我会说该模式无法实现。如果您将 View 视为 JSP,那么 Controller 无法主动设置 UI 组件的任何值。 (对我来说,这是模式的核心: Controller 实际上通过设置输入/输出 UI 组件的值来主动更新 View ,而不是相反( View 从模型对象获取字段)。这不能用上述技术作为 JSP 无法以这种方式访问​​。

虽然它可以在基于 Javascript 的 Web 环境中实现。将您的 View 视为 DOM,将您的 Controller 视为 Javascript 组件。 JS Controller 对 DOM 具有直接写访问权限,因此可以像模式建议的那样主动更新单个字段。要更新/获取模型,JS Controller 可以与服务器端系统 e. G。基于通过 Ajax 的 REST API。

关于java - 使用 JSP 和 POJO 的被动 View 设计模式示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11383688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com