例如,我有一些类.article,我想将此类视为网格视图.所以我应用了这种风格:
.article{
width:100px;
height:100px;
background:#333;
float:left;
margin:5px;
}
Run Code Online (Sandbox Code Playgroud)
该样式将使.article看起来平铺/网格.固定高度可以正常工作.但是如果我想将高度设置为自动(根据其中的数据自动拉伸),网格看起来很讨厌.

而我想这样的观点:

我即将选择组织我的观点(使用spring-mvc,但这不应该太重要)
据我所知,有6个选项(尽管它们并不相互排斥):
<jsp:include><%@ include file="..">Tiles和Sitemesh可以分组; 所以可以的Freemarker和速度.每个小组中使用哪一个不是这个讨论的问题,有足够的问题和讨论.
这是一个有趣的读物,但不能说服我使用瓷砖.
我的问题是 - 这些框架提供的内容 <@ include file="..">与JSTL 无法正常完成.要点(一些来自文章):
包括部分页面,如页眉和页脚 - 之间没有区别:
<%@ include file="header.jsp" %>
Run Code Online (Sandbox Code Playgroud)
和
<tiles:insert page="header.jsp" />
Run Code Online (Sandbox Code Playgroud)在标题中定义参数 - 如标题,元标记等.这非常重要,尤其是从SEO的角度来看.使用模板选项,您只需定义每个页面应定义的占位符.但是你可以在jsp中使用JSTL,使用<c:set>(在包含页面中)和<c:out>(在包含的页面中)
布局重组 - 如果要在菜单上方移动面包屑,或在另一个侧面板上方移动登录框.如果页面包含(使用jsp)组织不当,则可能需要在这种情况下更改每个页面.但是如果你的布局不是太复杂,并且你把常见的东西放在页眉/页脚中,就没有什么可担心的了.
公共组件和特定内容之间的耦合 - 我没有发现这个问题.如果要重用某些片段,请将其移动到不包含任何页眉/页脚的页面,并在需要的地方包含它.
效率 - <%@ include file="file.jsp" %>比其他任何东西都更有效,因为它被编译一次.所有其他选项都被解析/执行多次.
复杂性 - 所有非jsp解决方案都需要额外的xml文件,其他包括,预处理器配置等.这既是学习曲线又是引入更多潜在的失败点.此外,它使支持和更改变得更加乏味 - 您必须检查许多文件/配置以了解正在发生的事情.
占位符 - 速度/自由标记比JSTL更多吗?在JSTL中,您放置占位符,并使用模型(放置在请求或会话范围内,由控制器)来填充这些占位符.
所以,说服我除了普通的JSP之外我应该使用上面的任何框架而不是/.
我在Tomcat 7中将一个Web应用程序部署为WAR文件.该应用程序构建为一个多模块项目:
通常,我们可以将JSP文件放在webapp项目中,并相对于上下文引用它们:
/WEB-INF/jsp/someMagicalPage.jsp
Run Code Online (Sandbox Code Playgroud)
问题是我们如何处理特定于客户扩展项目的JSP文件,这些文件不应始终包含在WAR中.不幸的是,我看不到JAR文件中的JSP.尝试classpath:jsp/customerMagicalPage.jsp在JspServlet中找不到的文件,因为它使用了ServletContext.getResource().
传统上,我们"解决"了maven解包客户扩展JAR,定位JSP,并在构建它时将它们放入WAR中.但理想的情况是,您只需在Tomcat中的爆炸WAR中放置JAR并发现扩展 - 这适用于除JSP之外的所有内容.
反正有没有解决这个问题?标准方式,特定于Tomcat的方式,黑客还是变通方法?例如,我一直在考虑在应用程序启动时解压缩JSP ...
我正在尝试运行此处给出的示例切片示例.
下面是我的POM.xml:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
当我试图运行该示例时,抛出以下错误:
Sep 17, 2010 11:59:43 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.apache.tiles.web.startup.TilesListener
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
at org.apache.tiles.web.startup.TilesListener.<init>(TilesListener.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我花了30分钟谷歌搜索,但找不到可能的溶剂.
请帮我...
这似乎是一个相当普遍的问题,所以我会用尽可能多的关键字来考虑它!
我有一堆(好的,九个)tile jpeg,带有标准的tile文件名.每个jpeg是220x175像素:
(top row)
tile_1_0_0.jpg
tile_1_1_0.jpg
tile_1_2_0.jpg
(middle row)
tile_1_0_1.jpg
tile_1_1_1.jpg
tile_1_2_1.jpg
(bottom row)
tile_1_0_2.jpg
tile_1_1_2.jpg
tile_1_2_2.jpg
Run Code Online (Sandbox Code Playgroud)
我如何使用imagemagick/montage"粘合"或将它们连接在一起以形成单个连贯的图像?我根本不想调整它们的大小,所以我猜最终的图像应该是660x525.
这将是蒙太奇,没有框架,阴影,边界等 - 只有九个原始图像,粘在一起制作一个jpeg.
我知道它应该是这些方面的东西,但我正在努力获得订单和正确的尺寸:
montage +frame +shadow +label -tile 3x3 -geometry <options> *.jpg joined.jpg
Run Code Online (Sandbox Code Playgroud) 我正在使用struts/tiles工作巡航预订应用程序,它使用多个内部servlet/jsp转发到达正确的jsp进行显示.但是,一旦你到达用于呈现页面的最终jsp,jsp中的${pageContext.request.requestURL}调用将返回此 jsp 的路径.
例如
所以,当我调用/booking/showCruiseDetails.jsp时,在${pageContext.request.requestURL}/booking/showCruiseDetails.jsp中
如何从通过多个转发到达的jsp获取原始(客户端制作的)请求URL .我确实在stackoverflow上找到了以下关于此处和此处的解决方案的帖子,但是他们没有解决在多次转发发生后如何查找原始请求URL的问题.
我要做的是将请求映射到servlet根目录(正确的术语?).我正处于将URL映射到正确视图的位置,但无法找到作为页面一部分的所有静态内容--css,javascript,images.
所以在我的web.xml中,我的servlet标签看起来像这样
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我的控制器看起来像这样:
@RequestMapping("/shop")
public class TheShopController extends MyBaseController {
public static String VIEW = "Tile.Shop";
@Override
@RequestMapping(method = RequestMethod.GET)
protected ModelAndView processRequest(HttpServletRequest req, HttpServletResponse resp) {
ModelAndView mav = new ModelAndView(VIEW);
return mav;
}
}
Run Code Online (Sandbox Code Playgroud)
MyBaseController非常简单.它看起来像这样:
public abstract class MyBaseController extends AbstractController {
protected Logger log = Logger.getLogger(getClass());
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp)
throws Exception {
ModelAndView mav = processRequest(req, resp);
return mav;
}
protected abstract ModelAndView processRequest(HttpServletRequest req, HttpServletResponse resp);
}
Run Code Online (Sandbox Code Playgroud)
我在视图层中使用Tiles.我的配置如下: …
我在我的应用程序中使用Spring 3和Tiles 2并且在重定向时遇到了一些麻烦.最好,我希望能够从Controller1方法调用或重定向到Controller2方法,但到目前为止都没有成功.
我试图在pageviews.properties文件中创建一个新条目.这样我就可以从Controller1返回这个名字,它会从xml文件中查找我的tile def名称.
createRejectionEmail.(parent)=tilesView
createRejectionEmail.url=createRejectionEmail.page
redirectRejectionEmail.(class)=org.springframework.web.servlet.view.RedirectView
rediectRejectionEmail.contextRelative=true
redirectRejectionEmail.url=createRejectionEmail.page
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试返回如下所示时,我的URL包含createRejectionEmail作为URL的一部分 - 而不是使用它来查找tile定义.mav.setViewName( "redirectRejectionEmail"); 回归mav;
<definition name="createRejectionEmail.page" extends="brandedLayout">
<put-attribute name="targetFunction" value="status" />
<put-attribute name="content" value="/WEB INF/jsp/pages/status/createRejectionEmail.jsp" />
</definition>
Run Code Online (Sandbox Code Playgroud)
我目前的配置如下.
<bean id="resourceViewResolver"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver"
p:order="0" p:basename="config.spring.viewresolution.pageviews"/>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/jsp/**/views.xml</value>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
任何帮助和指导将不胜感激!
在Spring MVC中,我可以使用JstlView的exposedContextBeanNames(或exposeContextBeansAsAttributes)在JSP中访问我的bean.例如,然后,在我的JSP中我可以编写($ {properties.myProperty).但是,当相同的JSP是切片视图的一部分时,无法访问这些属性.是否可以正确配置Tiles或以其他方式访问这些属性?
我正在使用Spring MVC 3.0.2和Tiles 2.2.1.这是我的一些配置:
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="order" value="1"/>
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="order" value="2"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="exposedContextBeanNames">
<list><value>properties</value></list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
编辑:我已经实施了Skaffman的解决方案.
TilesExposingBeansViewResolver.java:
package es.kcsolutions.util.spring.servlet.view;
import org.springframework.web.servlet.view.*;
public class TilesExposingBeansViewResolver extends UrlBasedViewResolver {
private Boolean exposeContextBeansAsAttributes;
private String[] exposedContextBeanNames;
public void setExposeContextBeansAsAttributes(boolean exposeContextBeansAsAttributes) {
this.exposeContextBeansAsAttributes = exposeContextBeansAsAttributes;
}
public void setExposedContextBeanNames(String[] exposedContextBeanNames) {
this.exposedContextBeanNames = exposedContextBeanNames;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws …Run Code Online (Sandbox Code Playgroud) 我Tileview使用TileView库显示一个大图像
现在我想在特定的瓷砖上显示时在矩形边界显示一个圆圈.
如何点击哪个瓷砖?以及如何显示BitMmap上面的那个瓷砖?
public class LargeImageTileViewActivity extends TileViewActivity {
TileView tileView;
@Override
public void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
// multiple references
tileView = getTileView();
// by disabling transitions, we won't see a flicker of background color when moving between tile sets
tileView.setTransitionsEnabled( false );
// size of original image at 100% scale
tileView.setSize( 2835, 4289 );
// detail levels
tileView.addDetailLevel( 1.000f, "tiles/painting/1000/%col%_%row%.jpg");
tileView.addDetailLevel( 0.500f, "tiles/painting/500/%col%_%row%.jpg");
tileView.addDetailLevel( 0.250f, "tiles/painting/250/%col%_%row%.jpg");
tileView.addDetailLevel( 0.125f, …Run Code Online (Sandbox Code Playgroud) tiles ×10
java ×5
jsp ×4
spring ×3
servlets ×2
spring-mvc ×2
android ×1
css ×1
css-float ×1
freemarker ×1
grid ×1
image ×1
imagemagick ×1
java-ee ×1
positioning ×1
slf4j ×1
struts ×1
tomcat ×1
velocity ×1