我正在努力使用我的xsl:fo(Apache Fop 1.1).我正在尝试使用内嵌图像和内联文本元素生成一个块,其中可能包含换行符.
<fo:block>
<fo:inline>First Line Second Line, Image: </fo:inline>
<fo:inline>
<fo:external-graphic scaling="non-uniform" content-height="scale-to-fit" content-width="4mm" height="4mm" src="data:image;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAABfCAIAAAB6Ck5uAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA0SURBVHhe7cGBAAAAAMOg+VNf4QBVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCoAXMKAAFau+l4AAAAAElFTkSuQmCC"/>
</fo:inline>
<fo:inline> some more Text on Line 2 3rd Line</fo:inline>
</fo:block>
Run Code Online (Sandbox Code Playgroud)
我希望输出会是
FirstLine
SecondLine, Image: || some more Text on Line 2
3rd Line
Run Code Online (Sandbox Code Playgroud)
我得到的是:
FirstLine SecondLine, Image: || some more Text on Line 2 3rd Line
Run Code Online (Sandbox Code Playgroud)
我已经玩了一段时间,在fo:block元素和/或fo:inline元素上有以下属性,给出了奇怪或意外的结果.
white-space-collapse="false"
white-space-treatment="preserve"
linefeed-treatment="preserve"
Run Code Online (Sandbox Code Playgroud)
有什么建议?
编辑1:将内联元素更改为这样的块
<fo:block white-space-treatment="ignore">
<fo:block white-space="pre">First Line
Second Line, Image: </fo:block>
<fo:block>
<fo:external-graphic scaling="non-uniform" content-height="scale-to-fit" content-width="4mm" height="4mm" src="data:image;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAABfCAIAAAB6Ck5uAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA0SURBVHhe7cGBAAAAAMOg+VNf4QBVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCoAXMKAAFau+l4AAAAAElFTkSuQmCC"/>
</fo:block>
<fo:block white-space="pre"> some more Text on …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用SimpleInjector作为IOC容器,到目前为止我对此非常满意.但是现在我遇到了一个我无法解决的问题.我搜索了SO和文档,但似乎还没有回答.我已经看过SimpleInjector的howto doc但是它没有涵盖开放的通用接口.
我有两个这样的通用接口:
public interface IEventPublisher<TEvent>
{
void Publish(TEvent Event);
}
public interface IEventSubscriber<TEvent>
{
void Subscribe(Action<TEvent> CallBack);
}
Run Code Online (Sandbox Code Playgroud)
这两个开放的通用实现:
class EventMediator<T> : IEventPublisher<T>, IEventSubscriber<T>
{
List<Action<T>> Subscriptions = new List<Action<T>>();
public void Publish(T Event)
{
foreach (var Subscription in this.Subscriptions)
Subscription.Invoke(Event);
}
public void Subscribe(Action<T> CallBack)
{
this.Subscriptions.Add(CallBack);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我正在设置SimpleInjector,如下所示:
this.Container = new SimpleInjector.Container();
this.Container.RegisterOpenGeneric(typeof(IEventPublisher<>), typeof(EventMediator<>), Lifestyle.Singleton);
this.Container.RegisterOpenGeneric(typeof(IEventSubscriber<>), typeof(EventMediator<>), Lifestyle.Singleton);
this.Container.Verify();
Run Code Online (Sandbox Code Playgroud)
我想要存档的是:在要求IEventPublisher或IEventSubscriber时,我想获得完全相同的实例.此外,此实例应为任何T的单例.
我用这些线测试了这个:
class DummyEvent {}
var p = this.Container.GetInstance<IEventPublisher<DummyEvent>>();
var s = this.Container.GetInstance<IEventSubscriber<DummyEvent>>();
var areSame …Run Code Online (Sandbox Code Playgroud) 我有一个OpenUI5表单,包含许多Inputcontrols.这些Inputcontrols使用OpenUI5 DataBinding绑定到模型,如文档中所述.例如:
new sap.m.Input({
value: {
path: "/Position/Bezeichnung",
type: new sap.ui.model.type.String(null, {
minLength: 1,
maxLength: 128
})
}
})
Run Code Online (Sandbox Code Playgroud)
如上例所示,我在stringlength上使用约束.当用户更改输入的值时,将触发验证,并根据Validationresult 调用此处描述的功能之一.在这些函数中,我正在设置控件的ValueState,如下所示:
setupValidation: function() {
var oCore = sap.ui.getCore();
oCore.attachValidationError(function (oEvent) {
oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.Error);
});
oCore.attachValidationSuccess(function (oEvent) {
oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.None);
});
oCore.attachFormatError(function (oEvent) {
oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.Error);
});
oCore.attachParseError(function (oEvent) {
oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.Error);
});
},
Run Code Online (Sandbox Code Playgroud)
我们假设绑定的模型变量是初始的.我正在加载视图,属性值被解析并显示为空.尽管未满足约束,但未调用Validationerror/Parseerror方法.这似乎是OpenUI5的标准行为.只有控件中的更改才会被验证.
现在让我们假设我有一个提交按钮,并且Inputcontrol的值仍为空.当用户点击提交按钮时,我想为我的视图的所有子控件触发DataBinding Validation.这将验证上述输入并导致错误.
我的问题是:如何触发视图中所有子控件的数据绑定验证?
关于SO的另一个问题是海报要求定义必要字段的方法.建议的解决方案是在控件上调用getValue()并手动验证值.我认为这有点麻烦,因为形成和约束信息和逻辑已经存在.
我正在使用webpack构建一个webapp,但遇到一些我无法弄清自己或文档的问题。
我想要实现的是配置webpack,因为它不包含一个特定的json文件或将它们全部都包含在主包中。但是,仍然可以这样要求它们:
define(['app/config.json'], function (config) {
...
});
Run Code Online (Sandbox Code Playgroud)
我当前的json文件的webpack配置如下所示:
module: {
loaders: [
{
test: /\.json/,
loader: "json"
},
// ...
]
}
Run Code Online (Sandbox Code Playgroud)
上面显示的配置将加载JSON文件,对其进行解析,并且需要它们的模块只需获取实例化的js对象即可。奇妙!config.json文件包含一些特定于安装的变量,这些变量应可由应用程序的用户编辑。
当使用像这样的文件加载器时:
{
test: /\.json/,
loader: "file",
query: {
name: 'res/[name].[ext]'
}
},
Run Code Online (Sandbox Code Playgroud)
捆绑包中不包含JSON文件,但要求它不加载文件,它只是返回文件名。有任何想法吗?
阅读多模型支持后,我尝试实现它.使用命名模型时,会发生绑定,但不会显示数据.
//控制器
sap.ui.controller("view.apps.Apps", {
onInit : function () {
var oAppsModel = new sap.ui.model.json.JSONModel("model/apps.json");
this.getView().setModel(oAppsModel, "apps");
}
});
Run Code Online (Sandbox Code Playgroud)
//查看
sap.ui.jsview("view.apps.Apps", {
getControllerName: function() {
return "view.apps.Apps";
},
createContent: function(oController) {
var oInboxList = new sap.m.List({
inset: true,
id: "appsList",
headerText: "Apps"
});
oInboxList.bindItems("apps>/items", function(sID, oContext) {
return new sap.m.StandardListItem({
title: '{name}',
description: '{name}'
})
});
var oPage = new sap.m.Page({
title: "Apps",
content: [oInboxList]
});
return oPage;
}
});
Run Code Online (Sandbox Code Playgroud)
// apps.json
{
"items": [{
"name": "ABC",
"view": "" …Run Code Online (Sandbox Code Playgroud)