今天我一直在努力从Freemarker迁移到Tiles2 + Freemarker.
我的freemarker模板使用来自spring.ftl的宏.
如果我在web.xml中提供fremarker servlet,我的模型对于freemarker是可见的,但是特定的spring变量(自然地)不会填充到模型中,因为FreemarkerView对它负责.
如果我为特定的url配置一个单独的DispatcherServlet(比如"/ tpl/*")并将freemarker解析器配置为该servlet的默认视图解析器并提供UrlFilenameViewController作为默认控制器,那么特殊的spring变量会填充到模型中,但是我自己的模型是不可见:它被绑定为请求属性.我可以通过$ {Request.mymodel.myvar}访问我的模型,但这样我必须更改所有的freemarker模板,我发现这个想法有些臭.
现在我的解决方案是扩展UrlFilenameViewController并将我的模型从请求添加到ModelAndView:
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = super.handleRequestInternal(request, response);
HashMap<String, Object> map = new HashMap<String, Object>();
Enumeration<String> attributes = request.getAttributeNames();
while(attributes.hasMoreElements()) {
String attribute = attributes.nextElement();
if("model".equals(attribute)) {
logger.debug("FreemarkerViewController.handleRequestInternal: putting attribute to model: " + attribute + "=" + request.getAttribute(attribute));
map.put(attribute, request.getAttribute(attribute));
}
}
logger.debug("FreemarkerViewController.handleRequestInternal: VIEW: " + mav.getViewName());
return new ModelAndView(mav.getViewName(), map);
}
Run Code Online (Sandbox Code Playgroud)
但是这个解决方案有点臭 - 如果我在我的业务控制器中向模型中添加一些东西,我必须在这里添加它.
我的问题有一个优雅的解决方案吗?
我在cakephp中遇到了身份验证问题,当从外部站点提供凭据时,身份验证将起作用,然后立即丢失,并且站点再次提示登录信息.
这家伙确定cakephp会话cookie正在改变.他的解决方案是将安全性设置为低.
好像在中等或高安全性中,Cake会对引用进行双重检查...但是当从外部站点(如hotmail或yahoo)单击受版权保护的链接时,安全性较低的工作正常
这个解决方案对我来说也很有用,但是我将cakephp设置为'低'安全性会让我失去什么?
有没有办法告诉linkify不要强调我的链接?我已经在使用textView.setLinkTextColor(stateList)更改颜色,但我想删除链接上插入的下划线.
这甚至可能吗?
我面临的问题是:
我想在上下文菜单中(当我右键单击文件夹时)要执行的操作并将输出显示给用户,在内部,比如说,带有垂直滚动条的文本区域窗口.假设该动作只是一个shell脚本,它在给定目录中执行"find"命令,搜索指定的模式.
到目前为止,我已经设法使用Automator实现了它.我不能做的是以同步方式管道输出("同步"的意思是当"find"命令产生输出打印到用户时,而不是在命令完成后输出) GUI.
我花了一些时间在这上面搜索,我得出的结论是XCode和Interface Builder必须加入到游戏中?我是在正确的轨道上吗?在没有深入研究这个框架的情况下,是否有一种直接而简单的方法可以成功实现这一目标?
非常感谢,
巴比斯
任何人都可以告诉我如何创建一个带有文本注释的PDF(以便在桌面上使用PDF阅读器打开PDF时可以看到注释)?
目前我能够创建PDF,但我无法为关键字"Annots"设置页面级别字典.这是我创建有关页面的元信息的示例代码.谁能告诉我哪里出错了以及我应该遵循的任何其他方法.
CFMutableDictionaryRef metaDataDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks,&kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(metaDataDictionary, CFSTR("Subtype"), CFSTR("Text"));
CFDictionarySetValue(metaDataDictionary, CFSTR("Contents"), CFSTR("This is a sample"));
CFDictionarySetValue(metaDataDictionary, CFSTR("Subj"), CFSTR("Subject"));
CFDictionarySetValue(metaDataDictionary, CFSTR("M"), CFSTR("Date"));
CFDictionarySetValue(metaDataDictionary, CFSTR("NM"), CFSTR("Name of Annotation"));
CFMutableArrayRef array = CFArrayCreateMutable(kCFAllocatorDefault,0, &kCFTypeArrayCallBacks);
CFArrayInsertValueAtIndex(array, 0, metaDataDictionary);
CFDictionarySetValue(pageDictionary,CFSTR("Annots"), array);
Run Code Online (Sandbox Code Playgroud)
提前致谢
我正在构建一个使用捏缩放和拖动的应用程序.问题是,现在我可以将图片拖出它的边界.我想知道如何使用拖动并确保图像同时保留在屏幕上.
这是我的代码:
public boolean onTouch(View v, MotionEvent event) {
ImageView view = (ImageView)v;
//handle touch events here.
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
Log.d(TAG, "mode=DRAG" );
mode = DRAG;
break;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
Log.d(TAG, "oldDist=" + oldDist);
if (oldDist > 10f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
Log.d(TAG, "mode=ZOOM" );
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
Log.d(TAG, "mode=NONE" );
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG) {
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - …Run Code Online (Sandbox Code Playgroud) 我有一个VS2005安装和部署项目,我遇到了一个我想要帮助的问题.
这是我的问题:
我的应用程序的' DefaultLocation '设置为' [ProgramFilesFolder]\MyApp '.现在我希望用户选择要安装此应用程序的驱动器.我知道这是通过" 安装文件夹选择 "对话框完成的,但我希望用户只能选择一个驱动器,而不是整个路径.
我的问题是如何捕获用户从"安装文件夹选择"对话框中选择的驱动器,并使用该驱动器号来固定我的"DefaultLocation"变量?
示例: 如果用户从安装文件夹选择对话框中选择"M:\",我想安装到" M:\ Program Files\MyApp "或者如果用户选择"E:\",则安装到" E:\" Program Files\MyApp ".
installation visual-studio-2005 setup-deployment visual-studio
我必须在Django模型中更新条目。
我在这样的保存方法中使用过force_update:
register = rform.save(commit=False)
register.user = request.user
register.save(register.user,force_update=True)
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误:
"ValueError at /status/
Cannot force both insert and updating in model saving."
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我正在尝试使用google的map api v3构建一个交互式地图.我们的想法是使用asp在地图上填充一些标记列表.
创建地图,原始标记和内容非常简单,但现在我想要一个指向地图外部各种标记的链接列表.单击列表中的项目时,我希望它平移到该位置并打开相应的文本框(infowindow).
一切正常,但我无法打开信息窗口.任何人都可以在这里暗示我做错了吗?
<script type="text/javascript">
var MapStart = new google.maps.LatLng(32.036020,34.760742);
var marker;
var map;
var infowindow = new google.maps.InfoWindow();
function initialize() {
var mapOptions = {
zoom: 2,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: MapStart
};
map = new google.maps.Map(document.getElementById("map"),
mapOptions);
<%
varCount = 0
while not rsListItem.EOF
varCount = varCount + 1
varLong = rsListItem.Fields.Item("custom_text1").Value
varLat = rsListItem.Fields.Item("custom_text2").Value
%>
var marker<%=varCount%> = new google.maps.Marker({
position: new google.maps.LatLng(<%=varLong%>,<%=varLat%>),
map: map,
animation: google.maps.Animation.DROP,
title : "<%=rsListItem.Fields.Item("heading").Value%>"
});
google.maps.event.addListener(marker<%=varCount%>, 'click', function() {
map.panTo(new …Run Code Online (Sandbox Code Playgroud) 我正在尝试从源表更新临时表:
UPDATE #DETAIL
SET EXCD_ID, CDOR_OR_AMT, CDOR_OR_VALUE
(SELECT
CDID_ADDL_DATA_1, CDID_ADDL_DATA, CDID_VALUE_STRING
FROM
CMC_CDID_DATA CDID
WHERE
CDID.CLCL_ID = DTL.CLCL_ID AND
CDID.CDML_SEQ_NO = DTL.CDML_SEQ_NO AND
CDID_TYPE = 'NDC'
)
FROM #DETAIL DTL
WHERE DTL.CDOR_OR_ID = 'XS'
Run Code Online (Sandbox Code Playgroud)
不幸的是,它抱怨
Incorrect syntax near ',' (on the '(SELECT' line)
Incorrect syntax near 'FROM' (the second one)
Run Code Online (Sandbox Code Playgroud)