我制作了这个控制器,用于发送电子邮件.我需要访问i18n才能发送本地化的电子邮件.
class MailController {
MessageSource messageSource
static transactional = false
public void sendEmail() {
String name = "some name..."
String subject = message(code:"somemessagekey", args:[name])
// do some fancy stuff here...
}
}
Run Code Online (Sandbox Code Playgroud)
i18n然后是文件(位于i18n文件夹中):
file name: messages.properties
content: somemessagekey = Blabla {0} - blablabla
Run Code Online (Sandbox Code Playgroud)
运行之后,它会抛出(在集成测试中):
groovy.lang.MissingPropertyException:没有这样的属性:class的messageSource:org.codehaus.groovy.grails.support.MockApplicationContext
我没有想法如何处理控制器中的本地化(我也在服务中尝试过,但这更复杂).
情况
实现一个多窗口应用程序,其中每个窗口都有自己的状态。
例子
这是一个展示问题的示例(在 github 上):
import SwiftUI
@main
struct multi_window_menuApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}.commands {
MenuCommands()
}
}
}
struct ContentView: View {
@StateObject var viewModel: ViewModel = ViewModel()
var body: some View {
TextField("", text: $viewModel.inputText)
.disabled(true)
.padding()
}
}
public class ViewModel: ObservableObject {
@Published var inputText: String = "" {
didSet {
print("content was updated...")
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题
我们应该如何以编程方式找出当前选定的视图是什么,以便我们可以在菜单命令即将完成时更新状态并更新视图模型中的状态?
import Foundation
import SwiftUI
import Combine
struct MenuCommands: …Run Code Online (Sandbox Code Playgroud) 我正在使用在Ubuntu服务器上运行的tomcat6.我已经部署了三个Grails 1.3.7应用程序.所有这些应用程序都使用包含我的域类的插件.
重新启动tomcat6后,我收到此异常.是什么导致IOException?我可以尝试在我的Groovy域类中实现Serializable接口......但我认为这不是真的需要.
这是异常堆栈跟踪:
SEVERE: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.example.User
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.example.User
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:479)
at com.vaadin.event.ListenerMethod.readObject(ListenerMethod.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at java.util.HashSet.readObject(HashSet.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) …Run Code Online (Sandbox Code Playgroud) 显示在If语句中声明的字符串时出现问题,以下是代码:
import java.util.Scanner;
// This program reads a temp and prints its current state
public class P03_01_2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// get temp
System.out.print("Enter a temperature: ");
if (in.hasNextDouble()) {
double temp = in.nextDouble();
// determine temp type and determine state
System.out.print("Enter C for Celcius or F for Fahrenheit: ");
String type = in.nextLine();
if (type.equals("c") || type.equals("C")) {
if (temp <= 0) {
String state = "frozen";
} else if …Run Code Online (Sandbox Code Playgroud)