免费做网站哪个好,网站诊断方法,如何给局域网 做网站,创意网站建设菊珠是佛教的佛珠。 一句话#xff0c;我相信您已经学到了什么#xff0c;印象深刻吗#xff1f; 好的#xff0c;我在这里不谈论佛教。 Juzu还是一个用于快速开发Portlet#xff08;以及即将推出的独立应用程序#xff09;的新框架。 您可以在Juzu网站上找到所需的所有… 菊珠是佛教的佛珠。 一句话我相信您已经学到了什么印象深刻吗 好的我在这里不谈论佛教。 Juzu还是一个用于快速开发Portlet以及即将推出的独立应用程序的新框架。 您可以在Juzu网站上找到所需的所有信息。 现在让我们用Juzu创建我们的第一个portlet 创建一个新项目 Juzu具有Maven原型。 我们可以使用它来快速创建第一个应用程序 mvn archetype:generate \-DarchetypeGroupIdorg.juzu \-DarchetypeArtifactIdjuzu-archetype \-DarchetypeVersion0.5.1 \-DgroupIdorg.example \-DartifactIdmyapp \-Dversion1.0.0-SNAPSHOT 这将在myapp文件夹中创建juzu项目。 部署Juzu Portlet 在部署应用程序之前您需要先构建它。 只需在myapp文件夹中运行mvn clean package 。 它将在myapp / target文件夹下生成一个myapp.war 。 现在我们准备在门户容器中部署portlet。 我们将使用最新的GateIn版本3.4即tomcat捆绑软件版本 。 下载后通过将其解压缩到您选择的位置进行安装。 您唯一需要做的就是将myapp.war文件拖放到webapps文件夹中并使用bin / gatein.sh run启动GateIn。 启动后将您的portlet添加到页面中。 您应该看到 太好了 您刚完成第一个Juzu portlet 在增强项目之前让我们对其进行探索。 探索项目 项目结构如下所示 强制性的web.xml在那里。 它不包含任何东西。 portlet.xml 该原型生成带有一些juzu init参数的基本portlet.xml ?xml version1.0 encodingUTF-8?
portlet-app xmlnshttp://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsdversion2.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsdhttp://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsdportletportlet-nameSampleApplication/portlet-namedisplay-name xml:langENJuzu Sample Application/display-nameportlet-classjuzu.portlet.JuzuPortlet/portlet-classinit-paramnamejuzu.run_mode/namevalueprod/value/init-paraminit-paramnamejuzu.inject/namevalueweld/value!--valuespring/value--/init-paramsupportsmime-typetext/html/mime-type/supportsportlet-infotitleSample Application/title/portlet-info/portlet
/portlet-app portlet类是通用的Juzu portlet类juzu.portlet.JuzuPortlet 。 此类声明2个init参数 juzu.run_mode dev 对源文件所做的更改将自动进行热编译和重新加载因此您无需重新部署应用程序即可对其进行测试。 juzu.inject –定义注入实现。 当前支持两种实现 焊接 CDI参考实现和弹簧 。 Juzu portlet类使用package-info.java文件收集所需的额外信息。 portlet.xml文件还包含有关portlet的基本信息 portlet-name display-name和portlet-info 。 您可以更改它们或根据需要添加其他一些。 包信息.java 该文件包含应用程序的所有配置。 该文件允许激活插件添加JS / CSS资源…但是现在让我们保持简单。 借助 juzu.Application批注唯一的强制性配置是应用程序的声明。 您必须声明应用程序的基本包在本例中为org.sample 。 Controller.java 此类是Juzu控制器。 它由允许呈现索引模板的视图方法索引 用View注释组成。 索引模板的路径使用Path注释设置。 默认情况下Juzu使用应用程序的模板包作为其根路径。 因此在本例中模板位于org / sample / templates / index.gtmpl 。 切换至开发模式 现在我们对什么是Juzu应用程序有了更多的了解让我们对基础的helloworld应用程序进行一些改进。 首先我们将从生产模式切换到开发模式以便快速测试我们的更改。 为此请编辑portlet.xml文件并将init-param juzu.run_mode的值更改为dev 。 然后构建您的应用程序并将战争放在GateIn的webapps文件夹中。 在这里您无需停止/启动GateIn因为Webapp将自动重新部署。 由于我们没有更改应用程序源文件中的任何内容因此您应该在portlet中看到相同的“ Hello World”消息。 为了测试开发模式您可以例如将文件webapps / myapp / WEB-INF / src / org / sample / templates / index.gtmpl重命名为index2.gtmpl 。 刷新页面后您将收到以下消息 现在编辑webapps / myapp / WEB-INF / src / org / sample / Controller.java并进行更改 Inject
Path(index.gtmpl)
Template index; 通过 Inject
Path(index2.gtmpl)
Template index; 并再次刷新您的页面。 一切恢复正常 很酷不是吗 表单动作和类型安全模板参数 我们将创建一个显示用户选择的位置地图的应用程序。 首先更新您的index.gtmpl模板 #{param namelocation/}
#{param namemapURL/}Location :
form action{updateLocation()} methodpostinput typetext namelocation value${location}/input typesubmit/
/form
br/
%if(location) {%
div idmap/div
%}% {param name location /}和{param name mapURL /}声明2种类型的安全模板参数这些参数稍后将在我们的Controller中使用 该表单包含输入文本并提交给我们的juzu控制器操作updateLocation 最后如果指定了位置则显示地图 现在让我们更新更新Controller.java package org.sample;import juzu.Action;
import juzu.Path;
import juzu.Resource;
import juzu.Response;
import juzu.View;
import juzu.template.Template;import javax.inject.Inject;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;public class Controller {InjectPath(index.gtmpl)org.sample.templates.index index;Viewpublic void index() throws IOException {index(, );}Viewpublic void index(String location, String mapURL) throws IOException {index.with().location(location).mapURL(mapURL).render();}Actionpublic Response updateLocation(String location) throws IOException {String mapURL https://maps.google.fr/maps?fqsources_qhlengeocodeq location aqtmieUTF8hqhnear location z12outputembed;return Controller_.index(location, mapURL);}
} 索引模板的类型现在为org.sample.templates.index 。 此类是通过注释生成的并且是Template的子类。 使用这种特定类型将使我们能够利用已声明的模板参数 位置和mapURL 。 默认索引视图现在调用一个新的索引视图该视图接受location和mapURL参数。 这个新视图使用了索引模板类及其流利的语法您喜欢它吗我是个人角色。 由于在模板中声明了location和mapURL参数因此org.sample.templates.index模板类接受了location方法和mapURL方法来设置其值。 通过Action批注将updateLocation方法定义为动作。 表单会调用它来检索正确的URL构建地图URL是一个基本示例通常会在这里调用您的服务。 然后它重定向到index View方法以呈现索引模板。 请注意控制器名称末尾的_。 Controller_类是Controller类的“已处理注释”版本。 如果在应用程序的已部署版本中进行了所有这些更改在webapps / myapp中则只需刷新即可您应该能够输入位置然后查看对应的地图 阿贾克斯 Juzu使您可以轻松地在应用程序中使用Ajax。 在表单中提交新位置时我们将使用它们来避免重新加载页面。 Ajax插件需要JQuery。 我们可以通过简单地将JQuery js文件拖放到项目中并使用Asset插件在package-info.java文件中声明它来添加到我们的应用程序中我将JQuery js文件拖放到public / scripts中 juzu.plugin.asset.Assets(scripts {juzu.plugin.asset.Script(id jquery, src public/scripts/jquery-1.7.1.min.js)}
) 现在我们将更新控制器以添加仅提供地图URL的新方法 AjaxResourcepublic Response.ContentStream.Char getMapURL(String location) throws IOException {String mapURL https://maps.google.fr/maps?fqsources_qhlengeocodeq location aqtmieUTF8hqhnear location z12outputembed;return Response.ok({\mapURL\: \ mapURL \}).withMimeType(application/json);} 请注意此新方法不再使用Action进行注释。 使用Ajax注释方法将使其可用于Ajax调用。 Resource批注使此方法将整个响应发送到客户端。 这就是我们想要的因为此方法只是创建新的URL并将其作为JSON响应发送回客户端。 最后我们必须更新模板文件以添加Ajax调用 #{param namelocation/}
#{param namemapURL/}script
function submitLocation(location) {$(#map).jzAjax({url: Controller.getMapURL(),data: {location: location}}).done(function(data) {$(#map iframe).attr(src, data.mapURL);});return false;
}
/scriptLocation :
form onsubmitreturn submitLocation(this.location.value)input typetext namelocation value${location}/input typesubmit/
/form
br/div idmap/div 表单的提交现在调用了SubmitLocation javascript函数。 该函数使用juzu Ajax函数jzAjax 在后台使用ajax JQuery函数。 此函数使用data中提供的参数调用url参数中提供的URL 。 因此这里它将调用Controller的新创建的方法并以JSON接收新的地图URL {mapURL: https://maps.google.fr/maps?fqsources_qhlengeocodeqnantesaqtmieUTF8hqhnearnantesz12outputembed} 然后我们仅使用JQuery来更新地图。 再一次只需刷新页面即可查看它的实际效果 现在您可以通过访问网站或观看截屏视频来了解有关Juzu的更多信息。 祝您编程愉快别忘了分享 参考 您的第一个Juzu Portlet来自TCG 博客博客的JCG合作伙伴 Thomas Delhimenie。 翻译自: https://www.javacodegeeks.com/2012/10/your-first-juzu-portlet-on-exo-platform.html