Вы можете сделать это свойство анимированным в +[UIView animateWithDuration:]
, реализовав -[actionForLayer:forKey]
в вашем классе вида. См. этот вопрос для примера того, как.
Возможно, это глупо, но я бы использовал файл .properties
, как в этом примере , вместо прямой фильтрации JSP.
Я хотел сделать то же самое, но меня не удовлетворило ни одно из существующих решений, в том числе использование подхода фильтрации Maven, что нормально, но я пытаюсь отойти от изменения существующих файлов кода в процессе сборки поэтому я исключил этот подход, хотя это разумный подход.
Способ получения версии проекта Maven в JSP-файл основан на подходе, аналогичном приведенному в здесь , за исключением того, что я не создаю файл Version.java, вместо этого у меня просто Maven. запишите версию в файл свойств, такой как «version.properties», например:
version.properties:
app.version = 0.1
, и пусть Maven поместит ее в путь к классам, например, в src / main / resources вот так:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<goals>
<goal>run</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<!-- Idea from link: http://stackoverflow.com/questions/2469922/generate-a-version-java-file-in-maven -->
<target>
<property name="resources.dir" value="${project.build.sourceDirectory}/../resources" />
<property name="version.filename" value="version.properties" />
<property name="buildtime" value="${maven.build.timestamp}" />
<echo message="Writing project version string to ${resources.dir}/${version.filename} ..." />
<echo file="${resources.dir}/${version.filename}" message="app.version = ${project.version}${line.separator}" />
</target>
</configuration>
</execution>
</executions>
</plugin>
Также, если вы используете Spring Framework 3.x +, вы можете добавить следующую конфигурацию для загрузки свойств в version.properties, если она существует, в противном случае просто показать «v0.0» или что-то еще:
@Configuration
@EnableWebMvc
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class WebHomeConfig extends WebMvcConfigurerAdapter implements
ApplicationContextAware {
private ApplicationContext _appContext;
/*
* (non-Javadoc)
*
* @see
* org.springframework.context.ApplicationContextAware#setApplicationContext
* (org.springframework.context.ApplicationContext)
*/
@Override
public void setApplicationContext(ApplicationContext appContext)
throws BeansException {
_appContext = appContext;
}
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.getAttributesMap().put("appVersion", appVersion);
return resolver;
}
/**
* Since we don't have any controller logic, simpler to just define
* controller for page using View Controller. Note: had to extend
* WebMvcConfigurerAdapter to get this functionality
*
* @param registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
/**
* The application version.
*/
@Value("${app.version:0.0}")
protected String appVersion;
@Bean
public static PropertySourcesPlaceholderConfigurer configurer() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setIgnoreResourceNotFound(true);
configurer.setLocations(new Resource[] {
new ClassPathResource("version.properties")});
return configurer;
}
}
И, наконец, в вашем /WEB-INF/views/home.jsp вы можете получить что-то вроде:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Service Status</title>
</head>
<body>
<h1>Service API</h1>
<p>The service is up and running! (v${appVersion})</p>
</body>
</html>
И это будет конечно, отобразить как:
Служба запущена и работает! (v0.1)
ПРИМЕЧАНИЕ. Если вы не используете классы JavaConfig для настройки Spring Framework, то вы можете сделать то же самое с конфигурацией Spring XML.
Вы можете использовать это в своем JSP-файле (в моем примере - template.jsp)
<head>
<meta name="Historia Social Unica version:${version}" />
Затем в вашем pom.xml вашего проекта вы должны активировать фильтрацию:
<resources>
<resource>
<includes>
<include>template.jsp</include>
</includes>
<directory>src/main/webapp/jsp/template</directory>
<targetPath>jsp/template/</targetPath>
<filtering>true</filtering>
</resource>
</resources>
</build>
И вы получите свой JSP с замененной версией переменной.
Вы можете использовать фильтрацию проекта для обработки JSP по мере его копирования в целевое расположение. Если JSP указан с помощью $ {project.version}
, а содержащая папка указана в качестве местоположения фильтра, значение должно быть подставлено в JSP по мере его упаковки.
Например, добавление этого в ваш POM включает фильтрацию для src / main / resources:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
Обновление: для упаковки войны вам может потребоваться настроить подключаемый модуль war для выполнения его фильтрации. См. Раздел Фильтрация
документации war-plugin] для получения более подробной информации и примеров.
По сути, процесс такой же, но он определен ниже war plugin, так что вы ' d имеет что-то вроде этого:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
<configuration>
<webResources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
Я использую этот плагин,
http://code.google.com/p/maven-substitute-plugin/
Вы можете сделать что-то вроде этого в Java,
public final static String projectVersion = "@PROJECT_VERSION@";
, и это значение просто передать в JSP.