问题描述
我正在尝试使用kotlinx.html构建html布局页面。我可以创建主页,但是在将其分解为由单独功能生成的部分时遇到问题。我不知道如何将在单独函数中创建的html包含到主文档中。
我在使用不安全方面取得了成功,但我认为应该有更好的方法
我的单元测试如下:
import kotlinx.html.*
import kotlinx.html.stream.appendHTML
import kotlinx.html.stream.createHTML
import org.junit.jupiter.api.Test
class TestHtmlDsl {
fun html(): String {
val stringBuffer = StringBuffer()
stringBuffer.appendHTML().html {
head {
}
body {
h1 { +"Head lines" }
div {
id = "main div"
div {
strong {+"sub div"}
}
getDiv1()
getDiv2()
}
}
}
return stringBuffer.toString()
}
fun getDiv1(): DIV.() -> Unit {
return {
p { +"first try" }
}
}
fun getDiv2(): String {
return createHTML().div {
p { +"second try" }
}
}
@Test
fun testHtml() {
println(html())
}
}
它产生输出:
<html>
<head></head>
<body>
<h1>Head lines</h1>
<div id="main div">
<div><strong>sub div</strong></div>
</div>
</body>
</html>
两个带有段落的divs
我正在此服务器端(jvm)运行。我在js中找到了一些示例,但没有运气
我很想在某个地方为kotlinx找到更好的文档
解决方法
import java.util.*;
public class FirstDaysOfMonths {
public static void main (String [] args) {
Scanner input = new Scanner (System.in); //create scanner
System.out.print("Enter a year: "); //request input from user
int year = input.nextInt();
System.out.print("Enter the day of the week: ");
String day = input.nextLine ();
int dayOfWeek = 0;
String monday = "Monday";
String tuesday = "Tuesday";
String wednesday = "Wednesday";
String thursday = "Thursday";
String friday = "Friday";
String saturday = "Saturday";
String sunday = "Sunday";
boolean isLeapYear = //check to see if it is a leap year
(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
if (monday.equalsIgnoreCase(day))
dayOfWeek = 1;
else if (tuesday.equalsIgnoreCase(day))
dayOfWeek = 2;
else if (wednesday.equalsIgnoreCase(day))
dayOfWeek = 3;
else if (thursday.equalsIgnoreCase(day))
dayOfWeek = 4;
else if (friday.equalsIgnoreCase(day))
dayOfWeek = 5;
else if (saturday.equalsIgnoreCase(day))
dayOfWeek = 6;
else dayOfWeek = 0;
System.out.print("January 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((31 % 7) + dayOfWeek);
System.out.print("February 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
if (isLeapYear)
dayOfWeek = ((29 % 7) + dayOfWeek);
else
dayOfWeek = ((28 % 7) + dayOfWeek);
System.out.print("March 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((31 % 7) + dayOfWeek);
System.out.print("April 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((30 % 7) + dayOfWeek);
System.out.print("May 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((31 % 7) + dayOfWeek);
System.out.print("June 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((30 % 7) + dayOfWeek);
System.out.print("July 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((31 % 7) + dayOfWeek);
System.out.print("August 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((31 % 7) + dayOfWeek);
System.out.print("September 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((30 % 7) + dayOfWeek);
System.out.print("October 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((31 % 7) + dayOfWeek);
System.out.print("Nobember 1," + year + "is ") ;
if (dayOfWeek == 0)
System.out.println(sunday);
else if (dayOfWeek == 1)
System.out.println(monday);
else if (dayOfWeek == 2)
System.out.println(tuesday);
else if (dayOfWeek == 3)
System.out.println(wednesday);
else if (dayOfWeek == 4)
System.out.println(thursday);
else if (dayOfWeek == 5)
System.out.println(friday);
else
System.out.println(saturday);
dayOfWeek = ((30 % 7) + dayOfWeek);
System.out.print("December 1," + year + "is ") ;
switch (dayOfWeek) {
case 0:
System.out.println(sunday);
break;
case 1:
System.out.println(monday);
break;
case 2:
System.out.println(tuesday);
break;
case 3:
System.out.println(wednesday);
break;
case 4:
System.out.println(thursday);
break;
case 5:
System.out.println(friday);
break;
default:
System.out.println(saturday);
break;
}
}
返回函数,因此您需要调用它:# Make predictions on test data batch using the loaded full model
test_predictions = loaded_full_model.predict(test_data,verbose=1)
14/324 [>.............................] - ETA: 39s
---------------------------------------------------------------------------
FailedPreconditionError Traceback (most recent call last)
<ipython-input-98-1081792ff13f> in <module>()
1 # Make predictions on test data batch using the loaded full model
2 test_predictions = loaded_full_model.predict(test_data,----> 3 verbose=1)
8 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name,num_outputs,inputs,attrs,ctx,name)
58 ctx.ensure_initialized()
59 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle,device_name,op_name,---> 60 inputs,num_outputs)
61 except core._NotOkStatusException as e:
62 if name is not None:
FailedPreconditionError: 2 root error(s) found.
(0) Failed precondition: /content/drive/My Drive/Colab Notebooks/test/.ipynb_checkpoints; Is a
directory
[[{{node ReadFile}}]]
[[IteratorGetNext]]
[[IteratorGetNext/_2]]
(1) Failed precondition: /content/drive/My Drive/Colab Notebooks/test/.ipynb_checkpoints; Is a
directory
[[{{node ReadFile}}]]
[[IteratorGetNext]]
0 successful operations.
0 derived errors ignored. [Op:__inference_predict_function_189545]
Function call stack:
predict_function -> predict_function
返回getDiv1()
,因此您需要附加它:getDiv1()()
(请注意,HTML中的所有保留字符(例如getDiv2()
,String
)都会被字符实体(+getDiv2()
,<
)替换,因此无论如何您都不会选择这种方式